2017-03-24 21 views
1

itextpdf 버전 5.5.6을 사용 중입니다. 다른 HTML 콘텐츠와 함께 <sup>ABC</sup>과 같은 위 첨자 태그가 포함 된 HTML을 전달합니다. 그러나 텍스트 ABC이 일반 텍스트로 나타납니다. 위 첨자 태그 <sup>이 이스케이프 처리되고 ABC 텍스트가 일반 텍스트로 나타납니다. 다음은 itextpdf를 사용하여 PDF를 생성하는 데 사용되는 코드입니다.Itextpdf XML Worker를 사용하여 HTML 위첨자 태그를 PDF로 변환하려면 어떻게해야합니까?

CssAppliers cssAppliers = new CssAppliersImpl(fontProvider); 
HtmlPipelineContext htmlContext = new HtmlPipelineContext(cssAppliers); 
htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory()); 
PdfWriterPipeline pdf = new PdfWriterPipeline(document, writer); 
HtmlPipeline html = new HtmlPipeline(htmlContext, pdf); 
CssResolverPipeline css = new CssResolverPipeline(cssResolver, html);               
byte[] byte1=htmlBufferForPDF.toString().getBytes("UTF-8"); 
XMLWorker worker = new XMLWorker(css, true); 
XMLParser p = new XMLParser(worker);  
ByteArrayInputStream stream = new ByteArrayInputStream(byte1); 
p.parse(stream, Charset.forName("UTF-8")); 

이 문제를 해결하기위한 제안 사항은 매우 유용 할 것입니다.

감사

답변

2

iTextSharp/XML 작업자 5.5.11 using the overloaded parseXHtml method 명시 적으로 CSS 스타일 설정과 나를 위해 다음 작품.

HTML :

string HTML = @" 
<html><head> 
<title>Test HTML</title> 
</head><body> 
<div>The 1<sup>st</sup> day of the month</div> 
</body></html> 
"; 

하는 구문 분석 코드 :

string css = "sup { vertical-align: super; font-size: 0.8em; }"; 
using (var stream = new MemoryStream()) 
{ 
    using (var document = new Document()) 
    { 
     PdfWriter writer = PdfWriter.GetInstance(document, stream); 
     document.Open(); 
     using (var htmlStream = new MemoryStream(Encoding.UTF8.GetBytes(HTML))) 
     { 
      using (var cssStream = new MemoryStream(Encoding.UTF8.GetBytes(css))) 
      { 
       XMLWorkerHelper.GetInstance().ParseXHtml(
        writer, document, htmlStream, cssStream 
       ); 
      } 
     } 
    } 
    File.WriteAllBytes(OUTPUT, stream.ToArray()); 
} 

출력 :

enter image description here