记录一下使用itext将html文件转为pdf文件遇到的一些问题
1、中文不显示
原因:itext默认不支持中文
解决方法:引入中文字体
需要注意的是在java代码中设置好中文字体后,还需要在html引用该字体,否则不会起效果。
2、css不起作用
原因:css文件使用的是相对路径
解决方法:将相对路径改为绝对路径或者将css写在html文件内部
3、html内容转换为pdf后,内容显示不全
原因:
解决方法:在html文件中设定纸张大小,如A4纸张@page{ size:a4}
具体请参考以下代码
首先在pom.xml文件中引入itext相关jar包
<!--itext--> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itext-asian</artifactId> <version>5.2.0</version> </dependency> <dependency> <groupId>org.xhtmlrenderer</groupId> <artifactId>core-renderer</artifactId> <version>R8</version> </dependency>
实现将html文件转换为pdf文件代码如下:
package com.lnjecit.util; import com.lowagie.text.pdf.BaseFont; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.util.ResourceUtils; import org.xhtmlrenderer.pdf.ITextFontResolver; import org.xhtmlrenderer.pdf.ITextRenderer; import java.io.*; import java.net.MalformedURLException; /** * Pdf处理工具类 * * @author * @create 2017-12-18 21:25 **/ public class PdfUtil { protected static Logger logger = LoggerFactory.getLogger(PdfUtil.class); /** * * @param htmlFile html文件存储路径 * @param pdfFile 生成的pdf文件存储路径 * @param chineseFontPath 中文字体存储路径 */ public static void html2pdf(String htmlFile, String pdfFile, String chineseFontPath) { // step 1 String url; OutputStream os = null; try { url = new File(htmlFile).toURI().toURL().toString(); os =