2017-05-03 3 views
0

Ich bin HTML-Konvertierung von PDF-Konvertierung von arabischem Text von Itext 5.5 und XMLWorker.Itext 5.5 Konvertieren von HTML in PDF für RTL-Sprachen (Arabisch) funktioniert nicht auf Tomcat

Dies funktioniert einwandfrei, wenn Java-Programm ausgeführt wird. (es sprint Sprache in RTL wie erwartet) aber immer LTR drucken, wenn Sie das gleiche Programm in Tomcat ausführen. (Ausprobiert sogar mit einer fest codierten Zeichenkette, Datei innerhalb des Tomcat-Anwendungscodes).

Hier ist der Beispielcode. Genommen von http://developers.itextpdf.com/question/how-convert-arabic-html-pdf

public void createPdf(File file) 
     throws IOException, DocumentException { 
     // step 1 
     Document document = new Document(); 
     // step 2 
     PdfWriter writer = 
      PdfWriter.getInstance(document, new FileOutputStream(file)); 
     // step 3 
     document.open(); 
     // step 4 
     // Styles 
     CSSResolver cssResolver = new StyleAttrCSSResolver(); 
     XMLWorkerFontProvider fontProvider = 
      new XMLWorkerFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS); 
     fontProvider.register("/Users/ashish/Downloads/NotoNaskhArabicRegular.ttf"); 
     CssAppliers cssAppliers = new CssAppliersImpl(fontProvider); 
     HtmlPipelineContext htmlContext = new HtmlPipelineContext(cssAppliers); 
     htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory()); 

     // Pipelines 
     PdfWriterPipeline pdf = new PdfWriterPipeline(document, writer); 
     HtmlPipeline html = new HtmlPipeline(htmlContext, pdf); 
     CssResolverPipeline css = new CssResolverPipeline(cssResolver, html); 

     // XML Worker 
     XMLWorker worker = new XMLWorker(css, true); 
     XMLParser p = new XMLParser(worker); 
     String htmlContentAr ="<table><tr><td>String of Arabia</td><td dir=\"rtl\" style=\"font-family: Noto Naskh Arabic\">لورانس العرب</td></tr></table>"; 

     //p.parse(new FileInputStream(HTML), Charset.forName("UTF-8")); 
     p.parse(new ByteArrayInputStream(htmlContentAr.getBytes(StandardCharsets.UTF_8)), Charset.forName("UTF-8")); 

     // step 5 
     document.close(); 
    } 

Antwort

0

Entschuldigung. Dumme Frage. Problem war In meinem Kriegseinsatz, 2 Version von Itext wurden kopiert, die Ursache verursachte.

Dies funktioniert gut mit 5.5.5 Glas Itext und Xmlworker.

Verwandte Themen