2014-03-25 32 views
0

我有HTML文件和外部CSS。我想从HTML文件中创建PDF,但是Endcoing不起作用。 HTML文件工作正常,但转换为PDF后,PDF中的某些字符丢失。 (čřě...)即使我在PDFWriter构造函数中设置Charset,也会发生这种情况。pdfwriter不翻译特殊字符

请问我该如何解决这个问题?

public void createPDF() { 
    try { 

     Document document = new Document(); 


     PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(username + ID + ".pdf")); 

     document.open(); 
     String hovinko = username + ID + ".html"; 

     XMLWorkerHelper.getInstance().parseXHtml(writer, document, new FileInputStream(hovinko), Charset.forName("UTF-8")); 

     document.close(); 

     System.out.println("PDF Created!"); 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 
} 

回答

0

在将它们写入PDF之前,您是否尝试转换特殊字符?

yourHTMLString.replaceAll(oldChar, newChar); 

​​
ř = ř
ě = ě

如果您需要更多的特殊字符,请访问此link

编辑:然后尝试了这一点,它的工作对我来说:

BaseFont basefont = BaseFont.createFont("C:/Windows/Fonts/ARIAL.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
      Font font = new Font(basefont, 12); 
      document.add(new Paragraph("čřě", font)); 
+0

是的,我做了...它无法正常工作... – fatevil

+0

如果您替换字符,现在输出什么?一样? –

+0

是的,一样的。我用这些字符串替换了所有的“特殊字符,它也是一样的 – fatevil

0

下面逻辑试试吧。它为我工作:

InputStream is = new ByteArrayInputStream(hovinko.getBytes(Charset.forName("UTF-8"))); 
XMLWorkerHelper.getInstance().parseXHtml(writer, document, is, Charset.forName("UTF-8")); 

我用xmlworker版本5.5.12和itextpdf版本5.5.12。