丁纤牧优秀作者
原创内容 来源:小居数码网 时间:2024-08-08 16:30:01 阅读() 收藏:20 分享:49 爆
导读:您正在阅读的是关于【数码知识】的问题,本文由科普作家协会,生活小能手,著名生活达人等整理监督编写。本文有1097个文字,大小约为4KB,预计阅读时间3分钟。
哈喽,今天是一篇HTML to PDF速食指南。
Java 转换 HTML 到PDF有许多类库,今天我们介绍一下第三方免费的类库OpenPDF。
OpenPDF是免费的Java类库 ,遵从LGPL 和 MPL协议,所以基本上能够可以随意使用。OpenPDF是基于iTEXT的,目前来说也是维护的比较好的Java操作PDF的开源软件。
话不多说,且看所需要的依赖,
<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.13.1</version> </dependency><dependency> <groupId>com.openhtmltopdf</groupId> <artifactId>openhtmltopdf-core</artifactId> <version>1.0.6</version></dependency><dependency> <groupId>com.openhtmltopdf</groupId> <artifactId>openhtmltopdf-pdfbox</artifactId> <version>1.0.6</version></dependency>
jsoup可以将html文件转换成输入流等,也可以遍历html的DOM节点,提取元素及样式等。
本篇示例将以下html文件转换成pdf
<html><head> <style> .center_div { border: 1px solid #404e94; margin-left: auto; margin-right: auto; background-color: #f6d0ed; text-align: left; padding: 8px; } table { width: 100%; border: 1px solid black; } th, td { border: 1px solid black; } body,html,input{font-family:"msyh";} </style></head><body><div class="center_div"> <h1>Hello java North!</h1> <div> <p>convert html to pdf.</p> </div> <div> <table> <thead> <th>ROLE</th> <th>NAME</th> <th>TITLE</th> </thead> <tbody> <tr> <td>MARKSMAN</td> <td>ASHE</td> <td>THE FROST ARCHER</td> </tr> <tr> <td>MAGES</td> <td>ANNIE</td> <td>THE DARK CHILD</td> </tr> <tr> <td>射手</td> <td>凯塔琳</td> <td>皮城女警</td> </tr> </tbody> </table> </div></div></body></html>
以上html用浏览器打开如下,乱码是因为中文字体不识别,下面转换的时候会加载对应的字体来进行转换。
使用Java转换HTML到PDF代码如下:
public class HtmlToPDFOpenSource { public static void main(String[] args) throws IOException { HtmlToPDFOpenSource htmlToPDFOpenSource = new HtmlToPDFOpenSource(); htmlToPDFOpenSource.generatePdfByOpenhtmltopdf(); } private void generatePdfByOpenhtmltopdf() throws IOException { File inputHtml = new File("E:javaNorthjava-study-notejavaOpenSourcesrcmainresourcestest.html"); //加载html文件 Document document = Jsoup.parse(inputHtml, "UTF-8"); document.outputSettings().syntax(Document.OutputSettings.Syntax.html); //引入资源目录,可以单独引入css,图片文件等 String baseUri = FileSystems.getDefault() .getPath("javaOpenSourcesrcmainresources") .toUri().toString(); try (OutputStream os = new FileOutputStream("javaOpenSourcesrcmainresourcestestOpenLeagueoflegends1.pdf")) { PdfRendererBuilder builder = new PdfRendererBuilder(); builder.withUri("javaOpenSourcesrcmainresourcestestOpenLeagueoflegends1.pdf"); builder.toStream(os); builder.withW3cDocument(new W3CDom().fromJsoup(document), baseUri); //引入指定字体,注意字体名需要和css样式中指定的字体名相同 builder.useFont(new File("javaOpenSourcesrcmainresourcesfontsmsyh.ttf"),"msyh",1,BaseRendererBuilder.FontStyle.NORMAL, true); builder.run(); } }}
使用Java代码转换成PDF如下(示例中使用了微软雅黑中文字体):
上述html文件中增加如下外部样式:
<link href="style.css" rel="stylesheet">
并在resources目录下添加style.css文件,重新生成PDF文件如下。
本片介绍了使用OpenPDF将html文件转换成PDF文件。同时也使用了自定义字体,外部样式。但是以下几点需要格外注意。
上面就是小居数码小编今天给大家介绍的关于(html能转换成pdf吗)的全部内容,希望可以帮助到你,想了解更多关于数码知识的问题,欢迎关注我们,并收藏,转发,分享。
94%的朋友还想知道的:
(535)个朋友认为回复得到帮助。
部分文章信息来源于以及网友投稿,转载请说明出处。
本文标题:html可以转换为pdf吗(html能转换成pdf吗):http://sjzlt.cn/shuma/153786.html