zoukankan      html  css  js  c++  java
  • 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:

  • 相关阅读:
    SpringMVC与Hibernate配置备忘
    Intent在Activity间的传值
    高效的JSON处理_ Jackson
    Ireport+JasperReport制作报表三折线图
    SpringMVC与Ibatis整合开发配置备忘
    Ireport+JasperReport制作报表二JasperReport编译模板
    Android开发之简单计算器
    android平台中解析xml文件:SAX、PULL
    SpringMVC SimpleFormController学习备忘
    java的十个大类
  • 原文地址:https://www.cnblogs.com/sunrunzhi/p/5070063.html
Copyright © 2011-2022 走看看