将远程url页面转换到本地的pdf文件 maven引入包: <dependency> <groupId>org.xhtmlrenderer</groupId> <artifactId>flying-saucer-pdf</artifactId> <version>9.1.6</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.7</version> </dependency>
图片先转换成base64编码: 直接写到img的src中标签要封闭,<img src="data:image..." />
html页面头部:
<html xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html">
public boolean convertHtmlToPdf(String url, String outputFile) throws Exception { OutputStream os = new FileOutputStream(outputFile); ITextRenderer renderer = new ITextRenderer(); InputStream inputStream = new ByteArrayInputStream(Jsoup.connect(url).get().html().getBytes()); String urlStr = IOUtils.toString(inputStream); renderer.setDocumentFromString(urlStr); // // 解决中文支持问题 ITextFontResolver fontResolver = renderer.getFontResolver(); fontResolver.addFont(SystemConstant.local_dir + "/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); //解决图片的相对路径问题,绝对路径不需要写 // renderer.getSharedContext().setBaseURL("file:/D:/"); renderer.layout(); renderer.createPDF(os); os.flush(); os.close(); return true; }