Java實現HTML轉PDF的總結


Java實現HTML轉PDF的幾種方法—主要解決中文亂碼問題

第一:同事在做HTML轉PDF中遇到亂碼問題

*****************************************************************

她采用的itext方法實現HTML轉存為PDF,代碼如下:

 1 import java.io.FileInputStream;
 2 import java.io.FileOutputStream;
 3 
 4 import com.itextpdf.text.Document;
 5 import com.itextpdf.text.PageSize;
 6 import com.itextpdf.text.pdf.PdfWriter;
 7 import com.itextpdf.tool.xml.XMLWorkerHelper;
 8 
 9 public class HtmlToPDF {
10     public static final String HTML = "D:/printEnforcement.htm";
11     public static void main(String[] args) {
12         try {
13             
14             Document document = new Document(PageSize.LETTER);
15             PdfWriter pdfWriter = PdfWriter.getInstance(document,
16                     new FileOutputStream("d://testpdf.pdf"));
17             document.open();
18             document.addAuthor("test");
19             document.addCreator("test");
20             document.addSubject("test");
21             document.addCreationDate();
22             document.addTitle("XHTML to PDF");
23 
24             XMLWorkerHelper worker = XMLWorkerHelper.getInstance();
25 
26             worker.parseXHtml(pdfWriter, document, new FileInputStream(HTML),  null, new AsianFontProvider());
27             document.close();
28             System.out.println("Done.");
29         } catch (Exception e) {
30             e.printStackTrace();
31         }
32     }
33 
34 }
 1 import com.itextpdf.text.BaseColor;
 2 import com.itextpdf.text.Font;
 3 import com.itextpdf.text.pdf.BaseFont;
 4 import com.itextpdf.tool.xml.XMLWorkerFontProvider;
 5 
 6 public class AsianFontProvider extends XMLWorkerFontProvider {
 7 
 8     public Font getFont(final String fontname, final String encoding,
 9             final boolean embedded, final float size, final int style,
10             final BaseColor color) {
11         BaseFont bf = null;
12         try {
13             bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",
14                     BaseFont.NOT_EMBEDDED);
15         } catch (Exception e) {
16             e.printStackTrace();
17         }
18         Font font = new Font(bf, size, style, color);
19         font.setColor(color);
20         return font;
21     }
22 }

代碼的思路很簡單的,一個pdfwriter類負責輸出pdf參數,一個document作為方法中的參數,一個xmlworkhelper負責將html轉化為pdf文檔;

在另一個類中XMLWorkerFontProvider目前主要寫的是關於字體參數的設置。

兩個java文件能夠顯示正常的PDF文件。

附測試代碼Demo:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM