2011-12-11 150 views
0

我有一個包含漢字的html文件。我想將HTML文件轉換爲PDF文件。一切都轉換得很好,但漢字顯示出問題。 代碼如下使用iText將包含中文字符的html文件轉換爲pdf文件。漢字不正確轉換

的HTMl file--

<html> 
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
</head> 
<body> 
chinese---快得利-協議重組貸款 
</body> 
</html> 

的Java文件-----

package bancmate.reports.otherreports.engreport; 
import com.lowagie.text.Document; 
import com.lowagie.text.Element; 
import com.lowagie.text.Watermark; 
import com.lowagie.text.html.simpleparser.HTMLWorker; 
import com.lowagie.text.html.simpleparser.StyleSheet; 
import com.lowagie.text.pdf.PdfWriter; 
//import com.lowagie.text.pdf.codec.Base64; 
import java.io.BufferedReader; 
import java.io.ByteArrayOutputStream; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.InputStreamReader; 
import java.io.Reader; 
import java.util.ArrayList; 

public class html2pdf { 

    public static void main(String[] args) throws Exception { 
     Document pdfDocument = new Document(); 
     Reader htmlreader = new BufferedReader(new InputStreamReader(
           new FileInputStream("D:\\Support\\LatestSupport\\CUSTOEMR.html"),"UTF-8")); 
     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     PdfWriter.getInstance(pdfDocument, baos); 
     pdfDocument.clearTextWrap(); 
     pdfDocument.open(); 
     StyleSheet styles = new StyleSheet(); 
     styles.loadTagStyle("body", "font", "Bitstream Vera Sans"); 
     ArrayList arrayElementList = HTMLWorker.parseToList(htmlreader, styles); 
     for (int i = 0; i < arrayElementList.size(); ++i) { 
      Element e = (Element) arrayElementList.get(i); 
      pdfDocument.add(e); 
     } 
     pdfDocument.close(); 
     byte[] bs = baos.toByteArray(); 
     // String pdfBase64 = Base64.encodeBytes(bs); //output 
     File pdfFile = new File("D:\\Support\\LatestSupport\\pdfExample.pdf"); 
     FileOutputStream out = new FileOutputStream(pdfFile.toString()); 
     out.write(bs); 
     out.close(); 


    } 
} 

輸出 - > 中國----

回答

0

是否該字體支持中文字符? 你可以試試iTextAsian庫。另見this thread

+0

我不知道。請告訴我,怎樣才能找出哪個字符支持中文字符 –

+0

你在哪個平臺上運行這個代碼? – David

+0

window-7,java-6 –