• 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:

  • 相关阅读:
    QT QQuickView嵌入到QT MDI中
    地理入门-经纬度时区速成总结篇(转)
    Linux下系统时间函数、DST等相关问题总结(转)
    camera接口---MIPI CSI-2接口、DVP接口和FPD-Link III LVDS、GMSL等接口对比(转)
    基于spi FLASH的嵌入式文件系统 littlefs(转)
    PID 温控系统 解决方法(转)
    单相计量芯片RN8209D使用经验分享(转)
    【开源】EasyFlash 新年发布 V4.0 beta 版,完全重写(转)
    在uboot中加入cmd_run命令,运行环境变量(转)
    MPU6050开发 -- 数据分析(转)
  • 原文地址:https://www.cnblogs.com/sunrunzhi/p/5070063.html
Copyright © 2020-2023  润新知