2017-03-24 5 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 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

コードを解析

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

関連する問題