使用的springboot,引入maven依赖。
一、准备工作:
1,检查需要转换的html文件声明是否正规:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
2,检查标签是否全部闭合
img,meta等元素必须要全部闭合,</meta></img>
3,检查自己是否有simsun字体放在c:windows/fonts下
下载字体链接:https://files.cnblogs.com/files/lumc5/simsun.rar
4,在需要转换的html文件的body标签里添加字体
加了这个字体样式转pdf时候才能看到中文
style = "font-family: SimSun;"
加完是这样的:
<body style = "font-family: SimSun;">
二、使用
1,pom引入依赖
<!-- url转pdf --> <dependency> <groupId>org.xhtmlrenderer</groupId> <artifactId>flying-saucer-pdf-itext5</artifactId> <version>9.0.3</version> </dependency>
2,工具类
import java.io.FileOutputStream; import java.io.OutputStream; import org.xhtmlrenderer.pdf.ITextFontResolver; import org.xhtmlrenderer.pdf.ITextRenderer; import com.itextpdf.text.pdf.BaseFont; public class UrlToPdfUtil { //private static final String OUT_PUT_PDF_PATH = "/home/data/pdf/"; //pdf文件的存放路径(Linux) private static final String OUT_PUT_PDF_PATH = "C:/Users/Administrator/Desktop/pdf/"; //pdf文件的存放路径(windows) /** * @Title 网页转存为PDF文件 * @param url 链接地址 * @param outputFileName 转存的PDF文件名 */ public static void urlToPdf(String url, String outputFileName) { try { String folder = outputFileName.substring(0, 6); String outputFile = OUT_PUT_PDF_PATH + folder +"/"+ outputFileName; java.io.File targetFile = new java.io.File(outputFile); if (!targetFile.getParentFile().exists()) { targetFile.getParentFile().mkdirs(); // 创建父级文件路径 } OutputStream os = new FileOutputStream(outputFile); ITextRenderer renderer = new ITextRenderer(); renderer.setDocument(url); ITextFontResolver fontResolver = renderer.getFontResolver(); //fontResolver.addFont("/usr/share/fonts/chinese/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); //Linux fontResolver.addFont("c:/Windows/Fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); //windows renderer.layout(); renderer.createPDF(os); os.close(); } catch (Exception e) { e.printStackTrace(); } } }
3,在controller里调用
@RequestMapping(value = "pdfDownload") public String pdfDownload() { String title="住房协议"+System.currentTimeMillis ()+".pdf"; String url="http://127.0.0.1:8888/UserFangyuanOrderAgreement"; UrlToPdfUtil.urlToPdf( url,title); return "redirect:UserFangyuanOrderAgreement"; }
学习链接1:Java 根据URL,将网页转存为PDF文件 - JAVA - 刘锐芬博客 | LiuR_Fun | lrfun