欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java实现将HTML代码转成PDF格式文件

程序员文章站 2022-05-28 16:45:58
...

Java实现将HTML代码转成PDF格式文件

大家好,今天在工作中遇到一个需要将HTML转成PDF的一个功能,于是查资料,研究了一下,找到的大部分都是使用jar包的,使用pom依赖的很少,这是个人认为还比较简单的一个使用pom依赖的方式,现在自己做一个总结。
本人也是一个刚入行的小白,如果有不对的地方希望,大家包涵并指出,大家一起进步。加油!

首先引入HTML代码转PDF格式文件的pom依赖

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.13</version>
</dependency>
<dependency>
    <groupId>org.xhtmlrenderer</groupId>
    <artifactId>flying-saucer-pdf-itext5</artifactId>
    <version>9.0.3</version>
</dependency>

编写工具类

public void html2pdf(String htmlContent, File pdfFile) throws Exception {
        OutputStream os = new FileOutputStream(pdfFile);
        ITextRenderer renderer = new ITextRenderer();
        renderer.setDocumentFromString(htmlContent);
        // 中文
        ITextFontResolver fontResolver = renderer.getFontResolver();
        ClassPathResource resource = new ClassPathResource("static/fonts/simsun.ttc"); // 下面有截图
        System.err.println(resource.toString());
        fontResolver.addFont(resource.getURL().toString(), BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
        renderer.layout();
        renderer.createPDF(os);
        os.close();
}

逻辑代码

public static void main(String[] args) {
		// 准备HTML模板代码
		String htmlTemplate = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n" + 
				"<html lang=\"en\" xmlns=\"http://www.w3.org/1999/xhtml\">\n" + 
				"<head>\n" + 
				"<meta charset=\"UTF-8\"></meta>\n" + 
				"<title>测试页面</title>\n" + 
				"</head>\n" +
				"<body style=\"font-family: SimSun;\">\n"+
				"<p class=\"test\">协议编号:ZRXY-201707021</p>\n"+
				"<p><strong>债权转让</strong><strong>协议</strong></p>\n"+
				"<p><strong>甲方(转让方):123</strong></p>\n"+
				"<p style=\"color:red;\">地址:天津市</p>\n"+
				"<p>姓名:张三</p>\n"+
				"<p>身份证号:2222222222</p>\n"+
				"<p><strong>乙方(受让方):详见附表1</strong></p>\n"+
				"<p><strong>丙方(</strong><strong>居间</strong><strong>服务方):</strong><strong>XXXX网络科技有限公司</strong></p>\n"+
				"<p><strong>注册号:2588888888</strong></p>\n" + 
				"<p>地址: 天津市滨海高新区</p>\n" +
				"<p>法定代表人:王五</p>\n" +
				"<p> </p>\n"+
				"<p><strong>鉴于:</strong></p>\n"+
				"<p>现甲乙丙三方本着互惠互利的原则,经过平等协商就乙方受让甲方债权相关事宜特签订本《债权转让协议》(以下简称“本协议”),并承诺共同遵守。</p>\n"+
				"<p><strong>2.1转让的债权资产详情</strong></p>\n"+
				"<table border=\"none;\" style=\"width:90%;border-collapse:collapse;\">\n"+
					"<tbody>\n"+
					"	<tr>\n"+
					"		<td>\n"+
					"		<p><strong>转让的债权资产本金金额</strong></p>\n"+
					"		</td>\n"+
					"		<td>13593.86</td>\n"+
					"		<td>\n"+
					"		<p><strong>债权转让垫付利息</strong></p>\n"+
					"		</td>\n"+
					"		<td>28.61</td>\n"+
					"		<td>\n"+
					"		<p><strong>债权资产转让日期</strong></p>\n"+
					"		</td>\n"+
					"		<td>2017-07-02</td>\n"+
					"	</tr>\n"+
					"	<tr>\n"+
					"		<td>\n"+
					"		<p><strong>借款利率</strong></p>\n"+
					"		</td>\n"+
					"		<td>12.80<strong>%</strong></td>\n"+
					"		<td>\n"+
					"		<p><strong>还款方式</strong></p>\n"+
					"		</td>\n"+
					"		<td colspan=\"3\">一次性还本付息</td>\n"+
					"	</tr>\n"+
					"	<tr>\n"+
					"		<td>\n"+
					"		<p><strong>原担保措施</strong></p>\n"+
					"		</td>\n"+
					"		<td colspan=\"6\">\n"+
					"		<p><strong>债务人正常还款</strong></p>\n"+
					"		</td>\n"+
					"	</tr>\n"+
					"	<tr>\n"+
					"		<td>\n"+
					"		<p><strong>手续费</strong></p>\n"+
					"		</td>\n"+
				"			<td colspan=\"6\">0.00</td>\n"+
				"		</tr>\n"+
				"		<tr>\n"+
				"			<td>\n"+
				"			<p><strong>债权资产转让价款</strong></p>\n"+
				"			</td>\n"+
				"			<td colspan=\"6\">13622.47</td>\n"+
				"		</tr>\n"+
				"	</tbody>\n"+
				"</table>\n" "</body>\n" + 
		 		"</html>\n";
		System.err.println(htmlTemplate); // HTML模板完整内容
		File file = new File("D:/a/测试.pdf"); // 创建文件对象
		try {
			htmPdfUtil.html2pdf(htmlTemplate, file); // 调用封装好的工具类
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			System.err.println("转换完成");
		}	
}

中文样式路径截图
Java实现将HTML代码转成PDF格式文件

相关标签: java html