2017-03-24 6 views
1

J'utilise itextpdf version 5.5.6. Je suis passer le tag exposant contenant html, c'est-à-dire <sup>ABC</sup> ainsi que d'autres contenus HTML. Mais le texte ABC apparaît comme un texte normal. On dirait que la balise exposant <sup> est échappée et Le texte ABC apparaît sous la forme d'un texte normal. Voici le code utilisé pour la génération de PDF en utilisant itextpdf.Comment puis-je convertir des balises exposant HTML en PDF en utilisant Itextpdf XML Worker?

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")); 

Toutes les suggestions pour résoudre ce problème vous seront très utiles.

Merci

Répondre

2

Les travaux suivants pour moi avec des travailleurs iTextSharp/XML 5.5.11 using the overloaded parseXHtml method et définissant explicitement le style 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> 
"; 

Code Parsing:

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()); 
} 

Sortie:

enter image description here