最近女朋友要通过html生成pdf文档,笨笨不爱思考的她直接求教与我,本人翻找 以前写过的案例(没有保存依赖jar包)进行测试一下,结果总是抛出莫名其妙的异常。慎重考虑 这恶心的问题可能是jar包不匹配问题引起的,估计广大网友也遇过类似这种问题,因此贴出相关依赖jar和程序代码防止防止广大网友好不容易找到一段程序却不能正常运行
程序源码
try {
String outputFile = "D:/pdf/demo.pdf";
OutputStream os = new FileOutputStream(outputFile);
ITextRenderer renderer = new ITextRenderer();
// 解决中文支持问题
ITextFontResolver fontResolver = renderer.getFontResolver();
// simsun.ttc为字体文件
fontResolver.addFont("D:/pdf/simsun.ttc", BaseFont.IDENTITY_H,
BaseFont.NOT_EMBEDDED);
//无论是方法1还是方法二对html格式要求都很严格
//=====1============直接拼接html代码 开始=====================
/*StringBuffer html = new StringBuffer();
// DOCTYPE 必需写否则类似于 这样的字符解析会出现错误
html.append("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">");
html.append("<html xmlns=\"http://www.w3.org/1999/xhtml\">")
.append("<head>")
.append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />")
.append("<style type=\"text/css\" mce_bogus=\"1\">body {font-family: SimSun;}</style>")
.append("</head>").append("<body>")
.append("<div>人员名单:</div>")
.append("<table width=\"200\" border=\"1\">")
.append("<tr>").append("<td>姓名:</td>")
.append("<td>年龄:</td>").append("</tr>").append("<tr>")
.append("<td>张小三</td>").append("<td>25</td>")
.append("</tr>").append("</table>");
html.append("</body></html>");
renderer.setDocumentFromString(html.toString());*/
//=================直接拼接html代码 结束====================
//=====2======直接加载模版 start
renderer.setDocument(new File("D:/pdf/t.htm"));
//=====2======直接加载模版 end
// 解决图片的相对路径问题,如果是绝对路劲的话这个设置无用
renderer.getSharedContext().setBaseURL("http://www.baidu.com/img/");
renderer.layout();
renderer.createPDF(os);
os.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
依赖jar包
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.1.1</version>
</dependency>
<!-- <dependency> <groupId>org.xhtmlrenderer</groupId> <artifactId>xhtmlrenderer</artifactId>
<version>8.3-atlassian</version> </dependency> -->
<dependency>
<groupId>org.xhtmlrenderer</groupId>
<artifactId>core-renderer</artifactId>
<version>R8</version>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.0.8</version>
</dependency>
分享到:
相关推荐
`Freemarker`是一个强大的模板引擎,通常用于动态生成HTML、XML等文本格式,而将`Freemarker`与HTML模板结合生成PDF,可以充分利用HTML的易编辑性和富文本特性,为用户提供高质量的文档输出。下面我们将深入探讨如何...
Java中使用FreeMarker生成PDF合同文件的过程主要包括配置FreeMarker环境、创建数据模型、解析模板、生成PDF以及添加图片盖章。通过结合FreeMarker的灵活性和Flying Saucer的转换能力,我们可以方便地将动态生成的...
在IT行业中,HTML到PDF的转换是一个常见的需求,特别是在生成报告、文档或发票时。`flying-saucer`和`iText`是两个流行的Java库,它们可以帮助我们实现这个功能。`flying-saucer`是一个开源项目,能够将HTML渲染为...
本教程将探讨如何利用iText库在Spring Boot应用中从HTML页面生成PDF,并进行一系列的定制化操作,如添加页眉、页码、水印、目录以及二维码。 首先,iText是一个强大的Java库,专门用于创建和编辑PDF文档。它提供了...
5. **生成PDF**: 最后,所有元素和图像被组合成一个完整的PDF文档,用户可以下载或在线预览。 **三、使用步骤** 1. **添加依赖**: 首先需要在项目中引入iText和iText Renderer的依赖库,如果是Maven项目,可以通过...
在IT行业中,生成PDF文件是一项常见的任务,尤其在报表、文档和发票的自动化处理中。本主题将深入探讨如何利用Freemarker模板和wkhtmltox工具来实现这一功能。 **Freemarker模板** 是一个强大的Java模板引擎,用于...
对于没有使用宏、函数等word、excel,需要按模板动态生成word、excel、html,只需要一个freemarker,先将word、excel、html等另存为**xml**,即可使用模板动态生成文件,目前xlsx是不支持的 4. PdfTemplate 对于不会...
jsPDF是一个广泛使用的JavaScript库,它允许开发者在浏览器端生成PDF文件,无需服务器端处理。本篇文章将深入探讨如何利用jsPDF实现HTML到PDF的转换,以及相关知识点。 首先,我们需要理解HTML和PDF之间的差异。...
接下来,使用 `writeHTML()` 方法加载 HTML 内容,并调用 `Output()` 函数生成并输出 PDF 文件。 4. **核心功能** - **字体支持**:TCPDF 包含多种内置字体,同时也支持添加自定义字体。 - **图像处理**:可以...
虽然iText也可以通过解析HTML生成PDF,但其对HTML和CSS的支持不如flying-saucer全面,特别是对于复杂的CSS样式,可能无法完美呈现。 另一个是`pd4ml`,它同样允许从HTML生成PDF。pd4ml的优点在于它能够处理一些复杂...
它允许开发者在.NET项目中直接生成PDF,而不需要对底层的命令行工具进行直接操作。 2. **安装Pechkin**:可以通过NuGet包管理器在.NET项目中安装Pechkin。运行`Install-Package Pechkin`命令,即可将Pechkin添加到...
我们创建了一个ITextRenderer实例,设置HTML文档的URL(这里我们将其保存到临时目录,然后读取),然后调用`setDocument()`方法加载HTML,`layout()`方法进行布局计算,最后使用`createPDF()`方法生成PDF文件。...
Thymeleaf允许开发者使用HTML作为模板语言,通过在HTML中插入特定的Thymeleaf表达式,将静态HTML转变为动态内容。这些表达式可以与后端的Java对象交互,填充数据到模板中,实现页面的动态渲染。 在Java工程中,我们...
在HTML到PDF的转换中,我们可以先将HTML渲染成一个图像或者使用HTML-to-PDF的API,然后将其插入到PDF文档中。iTextSharp提供了一个名为`HTMLWorker`的类,可以将HTML文本转换为PDF元素,但请注意,这个类已经过时,...
在本文中,我们将深入探讨如何使用Qt框架中的QPrinter类来生成PDF文件或进行打印机打印。这个过程通常涉及将数据转换为HTML格式,因为HTML是一种通用的、易于处理的结构化语言,适合表示表格和其他复杂的数据结构。 ...
本篇文章将深入探讨如何使用iText来生成PDF的目录。 首先,理解PDF目录的基本结构至关重要。PDF目录通常由一系列层次化的书签构成,每个书签对应文档中的一个部分、章节或子章节。在iText中,这些书签是通过`...
本主题将探讨如何利用Freemarker模板生成PDF以及如何使用EasyPOI生成带有图片、水印和分页功能的Excel。 首先,让我们深入了解Freemarker。Freemarker是一个强大的模板引擎,它用于生成文本输出,如HTML、XML或PDF...
综合使用`pdfkit`和`reportlab`,你可以在Python中构建功能丰富的HTML转PDF以及直接生成PDF报告的解决方案。无论是从网页抓取数据生成报告,还是自定义设计PDF文档,这两个库都能提供必要的工具和灵活性。记得在使用...
3. Flying Saucer:这个库主要专注于HTML到PDF的转换,如果你已经有了HTML内容,可以考虑使用Flying Saucer快速生成PDF。 在实际开发中,我们需要根据需求选择合适的库。例如,如果需要高度自定义PDF布局和样式,...