java html导出pdf的文章有很多大多都使用的是itext,其实用过的都知道itext有时并不能满足我们的需求,不能兼容html的样式,而且从html页面导出的图片到pdf中也并不好处理。Flying Sauser实现html2pdf,纠错能力差,支持多种中文字体(部分样式不能识别),而且对html的格式也是十分的严格,如果使用一种模版的话使用Flying Sauser技术倒是不错的选择,但是对于不规则的html导出pdf就并不是那么的适用。这时我们就要考虑使用其他的技术,而PD4ML可以满足我们需求,PD4ML实现html2pdf,速度快,纠错能力强可以过滤不规则的html标记,支持多种中文字体,支持css。
package com.pd4ml.pdf;
import java.awt.Insets;
import java.io.File;
import java.io.FileOutputStream;
import java.io.StringReader;
import org.zefer.pd4ml.PD4Constants;
import org.zefer.pd4ml.PD4ML;
import com.lowagie.text.FontFactory;
public class ConverterPdf {
public static void main(String[] args) throws Exception {
ConverterPdf converter = new ConverterPdf();
converter.generatePDF_2(new File("F:/demo_ch_pd4ml_a.pdf"), "F:/Noname22.html");
File pdfFile = new File("F:/demo_ch_pd4mlssss.pdf");
StringBuffer html = new StringBuffer();
html.append("<html>")
.append("<head>")
.append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />")
.append("</head>")
.append("<body>")
.append("<font face=\"KaiTi_GB2312\">")
.append("<font color='red' size=22>显示中文</font>")
.append("</font>")
.append("</body></html>");
StringReader strReader = new StringReader(html.toString());
converter.generatePDF_1(pdfFile, strReader);
}
// 手动构造HTML代码
public void generatePDF_1(File outputPDFFile, StringReader strReader) throws Exception {
FileOutputStream fos = new FileOutputStream(outputPDFFile);
PD4ML pd4ml = new PD4ML();
pd4ml.setPageInsets(new Insets(20, 10, 10, 10));
pd4ml.setHtmlWidth(950);
pd4ml.setPageSize(pd4ml.changePageOrientation(PD4Constants.A4));
pd4ml.useTTF("java:fonts", true);
pd4ml.setDefaultTTFs("SimHei", "Arial", "Courier New");
pd4ml.enableDebugInfo();
pd4ml.render(strReader, fos);
}
// HTML代码来自于HTML文件
public void generatePDF_2(File outputPDFFile, String inputHTMLFileName) throws Exception {
FileOutputStream fos = new FileOutputStream(outputPDFFile);
PD4ML pd4ml = new PD4ML();
pd4ml.setPageInsets(new Insets(5, 20, 20, 20));
pd4ml.setHtmlWidth(1000);
pd4ml.setPageSize(pd4ml.changePageOrientation(PD4Constants.A4));
pd4ml.useTTF("java:fonts", true);
pd4ml.setDefaultTTFs("SimHei", "Arial", "Courier New");
pd4ml.enableDebugInfo();
pd4ml.render("file:" + inputHTMLFileName, fos);
}
}
附件中有源码,用到了pd4ml.jar,ss_css2.jar,fonts.jar(包太大全部文件在我的csdn上)下载地址:http://download.csdn.net/detail/sy456zsc/4480028
分享到:
相关推荐
此外,PD4ML的跨平台性,特别是其对Linux操作系统的兼容性,使其成为Java开发者在各种系统环境下生成PDF的理想工具。 1. **HTML到PDF的转换**:PD4ML的核心功能是将HTML文档或网页内容转换为PDF格式。它解析HTML...
在IT行业中,PDF(Portable Document Format)...总之,解决PD4ML导出PDF中文乱码问题需要综合考虑编码设置、字体支持以及代码中的处理逻辑。通过调整这些因素,可以确保PDF文档正确地显示中文字符,从而提升用户体验。
此外,PD4ML支持自定义字体映射,这在处理中文、特殊字符或定制的Web字体时特别有用。开发者可以通过提供一个字体目录和映射文件,让PD4ML知道如何正确渲染HTML中的字体。 对于CSS样式的支持,PD4ML会尽可能地保留...
通过解析HTML和CSS,PD4ML可以忠实于源代码地将网页内容转换为PDF格式,支持表格、图片、链接、字体样式等元素。 要开始使用PD4ML,第一步是获取相应的jar包。在提供的压缩包中,你应该能找到名为“PD4ML”的JAR...
最后,我们来看"Pdf4Html.java",这应该是一个示例程序或者模板代码,演示了如何使用PD4ML API将HTML转换为PDF,并解决中文乱码问题。在这个Java源文件中,可能会包含如下关键步骤: 1. 引入必要的库:导入PD4ML和...
【pd4ml导出PDF(支持中文)】技术解析 在IT行业中,生成PDF文档是一项常见的需求,特别是在数据报告、用户手册或者网页内容保存等方面。pd4ml是一个强大的Java库,它允许开发者将HTML内容直接转换为高质量的PDF...
在Java项目中使用pd4ml,首先需要下载相关的jar包,包括pd4ml主库以及可能需要的字体包(以支持中文等多语言显示)。这些jar文件可以直接添加到项目的类路径中,或者如果使用Maven或Gradle构建系统,可以通过配置...
PD4ML是一款强大的Java库,专门用于将HTML内容转换为高质量的PDF文档。这款库以其易用性和灵活性著称,使得开发人员能够轻松地在Java应用程序中集成PDF生成功能。在"PD4ML JAR包 PDF生成"这个主题中,我们将深入探讨...
在Java开发环境中,PD4ml是一个非常实用的工具,尤其是在需要将网页内容、报告或者邮件正文导出为PDF格式时。 首先,我们来详细了解PD4ml的工作原理。PD4ml的核心是它对HTML和CSS的解析能力。它使用了一个内置的...
**pd4ml** 是一个基于Java的库,用于将HTML内容转换为高质量的PDF文档。这个库特别适合Java开发者在项目中实现从网页或者HTML文本生成PDF的需求。它支持多种CSS样式,使得转换后的PDF能尽可能地保持与原始HTML相似的...
3. **图像处理**:PD4ML能够嵌入HTML中的图像到PDF中,支持JPEG、PNG、GIF等多种图像格式。同时,它还可以根据需要调整图像的大小和质量,以适应PDF的输出要求。 4. **表格和列表**:PD4ML可以正确处理HTML中的表格...
PD4ML是一个强大的Java库,它允许开发者将HTML内容转换为高质量的PDF文档。本教程将详细讲解如何利用PD4ML在前台和后台环境中将HTML生成PDF,并介绍所需的资源和示例代码。 首先,我们需要理解PD4ML的基本工作原理...
至于插入图片,PD4ML支持从URL、文件系统或内存中加载图片,并将其嵌入到PDF中。在HTML中,你可以使用`<img>`标签,指定`src`属性为图片的路径或URL。PD4ML在转换时会自动处理这些图像,确保它们在PDF中正确显示。...
`pd4ml`是一个Java库,专门用于将HTML内容转换为高质量的PDF文档。本篇文章将详细阐述`pd4ml`的工作原理、使用方法以及如何通过提供的代码示例进行实际操作。 `pd4ml`的核心功能是解析HTML并将其转换为PDF格式。它...
1.html 转 pdf 会保留原有样式 css,用到时直接...2.windows,linux下都没有问题,解决了中文乱码 3.在html中用<font face='KaiTi'></font>包含body face值可以改,但要和fontspd4下的fonts.properties里边设定的值一致
【pd4ml将HTML文件转换成PDF文件】 pd4ml是一个强大的Java库,它允许开发者将HTML内容转换为高质量的PDF文档。这个工具在IT领域非常有用,因为很多应用程序需要将网页或者HTML报告导出为PDF格式,以便于打印、存档...
【pd4ml在线转pdf】是一个工具或服务,主要用于将HTML内容转换成PDF格式的文档。这个工具可能基于Java开发,因为提到了“jar包”,这通常是Java应用程序的可执行文件。pd4ml是一个流行的Java库,它允许开发者将HTML...