博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java实现HTML转PDF的总结
阅读量:4472 次
发布时间:2019-06-08

本文共 2369 字,大约阅读时间需要 7 分钟。

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:

 

转载于:https://www.cnblogs.com/sunrunzhi/p/5070063.html

你可能感兴趣的文章
图的遍历(深度优先与广度优先搜索两种方案)
查看>>
快速读入模板
查看>>
\n ^ \t的使用
查看>>
css盒模型
查看>>
探索式测试:测试自动化
查看>>
make install fping
查看>>
面试笔试题
查看>>
#loj3051 [十二省联考2019] 皮配
查看>>
MySql可视化工具MySQL Workbench使用教程
查看>>
个人站立会议第二阶段07
查看>>
云时代架构阅读笔记五——Web应用安全
查看>>
IOS 单击手势和cell点击冲突
查看>>
学习_HTML5_day3
查看>>
计算机网络与应用第二次笔记
查看>>
Django之ORM查询
查看>>
学习python第七天
查看>>
Flask基础(07)-->正则自定义转换器
查看>>
网站架构模式(二)
查看>>
【数据结构】算法 LinkList (Add Two Numbers)
查看>>
Bugtags:移动时代首选 Bug 管理系统
查看>>