Java HTML2PDF文档的解决方案

来源:互联网 发布:mac查看ipod隐藏文件 编辑:程序博客网 时间:2024/06/05 12:57

1、IText实现html2pdf,速度快,纠错能力差,支持中文(要求HTML使用unicode编码),但中支持一种中文字体,开源。

 

2、Flying Sauser实现html2pdf,纠错能力差,支持多种中文字体(部分样式不能识别),开源。

 

3、PD4ML实现html2pdf,速度快,纠错能力强,支持多种中文字体,商业。


这里只介绍 PD4ML

PD4ML

        官网下载:http://pd4ml.com/downloads.htm

        依赖jar包:pd4ml_demo.jar、pd4ml__css2.jar、fonts.jar

       下面只是一个小的测试案例,如果项目中使用到了该组件可以参考API完成项目组中相应的功能!

      

[java] view plain copy
  1. import java.awt.Insets;  
  2. import java.io.File;  
  3. import java.io.FileOutputStream;  
  4. import java.io.StringReader;  
  5.   
  6. import org.zefer.pd4ml.PD4Constants;  
  7. import org.zefer.pd4ml.PD4ML;  
  8.   
  9. public class Converter {  
  10.     public static void main(String[] args) throws Exception {  
  11.         Converter converter = new Converter();  
  12.         converter.generatePDF_2(new File("D:/Test/demo_ch_pd4ml_a.pdf"), "D:/Test/a.htm");  
  13.         File pdfFile = new File("D:/Test/demo_ch_pd4ml.pdf");  
  14.         StringBuffer html = new StringBuffer();  
  15.         html.append("<html>")  
  16.             .append("<head>")  
  17.             .append("<meta http-equiv=/"Content-Type/" content=/"text/html; charset=UTF-8/" />")  
  18.             .append("</head>")  
  19.             .append("<body>")  
  20.             .append("<font face=/"KaiTi_GB2312/">")  
  21.             .append("<font color='red' size=22>显示中文</font>")  
  22.             .append("</font>")  
  23.             .append("</body></html>");  
  24.         StringReader strReader = new StringReader(html.toString());  
  25.         converter.generatePDF_1(pdfFile, strReader);  
  26.     }  
  27.     // 手动构造HTML代码  
  28.     public void generatePDF_1(File outputPDFFile, StringReader strReader) throws Exception {  
  29.         FileOutputStream fos = new FileOutputStream(outputPDFFile);  
  30.         PD4ML pd4ml = new PD4ML();  
  31.         pd4ml.setPageInsets(new Insets(20101010));  
  32.         pd4ml.setHtmlWidth(950);  
  33.         pd4ml.setPageSize(pd4ml.changePageOrientation(PD4Constants.A4));  
  34.         pd4ml.useTTF("java:fonts"true);  
  35.         pd4ml.setDefaultTTFs("KaiTi_GB2312""KaiTi_GB2312""KaiTi_GB2312");  
  36.         pd4ml.enableDebugInfo();  
  37.         pd4ml.render(strReader, fos);  
  38.     }  
  39.   
  40.     // HTML代码来自于HTML文件  
  41.     public void generatePDF_2(File outputPDFFile, String inputHTMLFileName) throws Exception {  
  42.         FileOutputStream fos = new FileOutputStream(outputPDFFile);  
  43.         PD4ML pd4ml = new PD4ML();  
  44.         pd4ml.setPageInsets(new Insets(20101010));  
  45.         pd4ml.setHtmlWidth(950);  
  46.         pd4ml.setPageSize(pd4ml.changePageOrientation(PD4Constants.A4));  
  47.         pd4ml.useTTF("java:fonts"true);  
  48.         pd4ml.setDefaultTTFs("KaiTi_GB2312""KaiTi_GB2312""KaiTi_GB2312");  
  49.         pd4ml.enableDebugInfo();  
  50.         pd4ml.render("file:" + inputHTMLFileName, fos);  
  51.     }  


原创粉丝点击