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:

  • 相关阅读:
    关于此博客的制作
    Java线程运行轨迹-代码追踪与定位
    MySQL安装和使用
    jenkins安装和使用教程
    持续集成(git+TortoiseGit+Gitblit)
    RF框架基础知识(二)
    RF工具ride使用
    Postman的使用
    用Python写RF测试
    RF框架基础知识(一)
  • 原文地址:https://www.cnblogs.com/sunrunzhi/p/5070063.html
Copyright © 2011-2022 走看看