import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import org.xhtmlrenderer.pdf.ITextFontResolver;
import org.xhtmlrenderer.pdf.ITextRenderer;
import com.lowagie.text.pdf.BaseFont;
public class TestFlyingSauser
{
public static void main( String[] args ) throws Exception
{
// demo_1();
demo_2();
}
// 不支持中文
public static void demo_1() throws Exception
{
String inputFile = "D:/Test/flying.html";
String url = new File( inputFile ).toURI().toURL().toString();
String outputFile = "D:/Test/flying.pdf";
OutputStream os = new FileOutputStream( outputFile );
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument( url );
renderer.layout();
renderer.createPDF( os );
os.close();
}
// 支持中文
public static void demo_2() throws Exception {
String outputFile = "G:/demo_3.pdf";
OutputStream os = new FileOutputStream(outputFile);
ITextRenderer renderer = new ITextRenderer();
ITextFontResolver fontResolver = renderer.getFontResolver();
fontResolver.addFont("C:/Windows/fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
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>");
html.append("<div>支持中文!</div>");
html.append("</body></html>");
renderer.setDocumentFromString(html.toString());
// 解决图片的相对路径问题
// renderer.getSharedContext().setBaseURL("file:/F:/teste/html/");
renderer.layout();
renderer.createPDF(os);
os.close();
}}
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.xhtmlrenderer.pdf.ITextFontResolver;
import org.xhtmlrenderer.pdf.ITextRenderer;
public class HTML2PDF {
/**
* 调用方式 htmlToPDF(response.getOutputStream(), htmlstr, "C:/WINDOWS/Fonts/simfang.ttf", "FangSong_GB2312", "GB2312", "http://xxxx/dtd/xhtml1-transitional.dtd");
*
* 相关图片必须使用绝对路径才能显示 如果要下载生成的文件,在此方法上方加上:
* response.setHeader("Content-disposition",
* "attachment;filename=英文文件名.pdf");
*
* @param 参数
* @param OutputStream out 输出流
* @param String htmlcode html代码。
*
* @param String fontName 字体名称 如:FangSong_GB2312
* @param String fontpath windows 字体路径 如:C:/WINDOWS/Fonts/simfang.ttf
* @param String encoding 编码 如:GB2312。
* @param String htmlDTDURL 如:http://xxxx/xhtml1-transitional.dtd
* version 2009.03.05
*/
public void htmlToPDF(OutputStream out, String htmlcode, String fontpath,
String
fontName, String encoding, String htmlDTDURL) throws Exception {
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
Transformer transformer = TransformerFactory.newInstance()
.newTransformer();
ITextRenderer renderer = new ITextRenderer();
ITextFontResolver resolver = renderer.getFontResolver();
InputStream intream = null;
Document doc = null;
Document doc2 = null;
try {
htmlcode = this.filterHeader(htmlcode,
encoding, fontName, htmlDTDURL);
intream = new ByteArrayInputStream(htmlcode.getBytes(encoding));
doc = (Document) builder.parse(intream);
transformer.setOutputProperty("encoding", encoding);
new DOMSource(doc);
transformer.transform(new DOMSource(doc), new StreamResult(bos));
intream = new ByteArrayInputStream(bos.toString().getBytes());
doc2 = (Document) builder.parse(intream);
resolver.addFont(fontpath, BaseFont.IDENTITY_H,
BaseFont.NOT_EMBEDDED);
renderer.setDocument(doc2, null);
renderer.layout();
renderer.createPDF(out, true);
out.flush();
out.close();
} catch (Exception ex) {
throw new Exception(ex.getMessage());
}
}
/**
*文件头
*/
private String filterHeader(String htmlcode, String encoding,String fontName,String htmlDTDURL) {
htmlcode="<table style=\"font-family:FangSong_GB2312\" width=\"100%\" height=\"100%\" border=\"0\"><tr><td>"+htmlcode+"</td></tr></table>";
htmlcode="<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \""+htmlDTDURL+"\" >\n"+htmlcode;
htmlcode = "<?xml version=\"1.0\" encoding=\"" + encoding + "\" ?>\n"
+ htmlcode;
return htmlcode;
}
}
分享到:
相关推荐
本项目提供了使用Java实现的PDF转HTML的功能。 首先,我们要理解PDF转HTML的基本原理。这个过程通常涉及解析PDF文档的布局、文本、图像和样式,然后将其重构为HTML元素。Java中有很多库可以帮助我们完成这项任务,...
要使用iTextPDF在Java中实现HTML到PDF的转换,首先确保项目中引入了所需的依赖。在Maven项目中,可以在`pom.xml`文件中添加如下依赖: ```xml <groupId>com.itextpdf</groupId> <artifactId>itextpdf <version>...
本文将详细讲解如何使用Java实现这一功能,包括HTML转PDF以及在PDF中添加印章。 首先,我们需要一个库来处理HTML转PDF的任务。在Java中,一个常用的库是`Flying Saucer`,它能够将HTML渲染为PDF格式。`Flying ...
总的来说,Java实现HTML页面转PDF主要涉及以下几个步骤: 1. 安装`wkhtmltopdf`并确保其可执行文件在系统路径中或在代码中指定。 2. 使用Java的Runtime或第三方库执行`wkhtmltopdf`命令。 3. 处理命令的输出和错误...
标题“java实现office、wps转pdf,pdf转word”指的是利用Java编程来实现在不同办公文档格式间的转换,特别是从Microsoft Office和WPS格式转换为PDF,以及从PDF反向转换为Word文档。 首先,让我们讨论从Office和WPS...
本项目提供了一个Java实现HTML转PDF的解决方案,适用于Eclipse开发环境。 1. **Java与PDF库** Java中用于生成PDF的库有很多,如iText、Flying Saucer、PDFBox等。其中,Flying Saucer是一个常用的库,它可以将HTML...
Java 实现 HTML 转 PDF 的解决方案是指使用 Java 语言将 HTML 页面转换为 PDF 文档的技术方案。本解决方案通常用于生成 PDF 报表、证书、合同等需要保留固定格式的文档。 在本解决方案中,使用了 Spring 框架来实现...
这个“Java使用iText将html转pdf并下载demo”的主题将深入讲解如何使用iText库实现这一功能。 首先,我们需要理解iText的基本用法。iText库提供了多种API,可以用来创建PDF文档、添加文本、图像、表格等元素。在...
Java后端实现HTML转PDF是常见的需求,尤其在生成报告、文档或网页打印场景中。PD4ML是一款高效且功能强大的Java库,专门用于将HTML内容转换为高质量的PDF文档。这个工具类的出现,使得开发者能够利用Java方便地处理...
在Java中实现TXT到PDF的转换,我们可以使用Apache PDFBox、iText或 Flying Saucer 这样的第三方库。本案例中,由于描述中提到“代码一目了然”,我们可能会使用相对简单易用的Flying Saucer库。Flying Saucer可以将...
在“java测试工具html转pdf”这个主题中,我们主要关注的是如何使用Java来实现HTML文档向PDF格式的转换。这涉及到对HTML的理解、PDF的生成原理以及Java中的相关库和框架。 首先,HTML(超文本标记语言)是网页设计...
在Java中,我们可以使用`java.net.URL`和`java.net.HttpURLConnection`类来实现。以下是一个简单的示例: ```java URL url = new URL("http://example.com"); HttpURLConnection connection = (HttpURLConnection) ...
全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF, EPUB, XPS, SWF 相互转换 ,word转pdf已做测试很好用!
总的来说,Java环境下URL转PDF的方法多样,可以根据具体需求和环境选择合适的方式。无论是通过解析HTML内容、使用渲染引擎还是借助Web自动化工具,Java都能提供相应的库和支持来满足这些需求。在实际应用中,可能还...
在这个场景中,我们将讨论如何利用Itext库在不修改源代码的情况下,实现HTML到PDF的转换,并处理换行问题。 首先,我们需要理解Itext不直接支持HTML到PDF的转换,但它可以通过其他方式间接实现。通常,我们会借助一...
java实现html转pdf,包括解决base64图片以及中文不显示问题
为了解决这个问题,本文将介绍使用 iText 和 FlyingSaucer 两个第三方库来实现 Java 中的 HTML 转 PDF 图片显示。 使用 iText 库 iText 库是一个功能强大的开源库,提供了许多实用的功能,可以方便地将 HTML 转换...
"java URL转PDF文件(完美支持中文)"的主题着重于如何利用Java库来实现这一功能,并且确保中文字符能够正确显示。在Linux环境下,由于字符编码的问题,中文字符可能会出现乱码,但通过特定的方法和库可以解决这个问题...
至于提供的压缩包文件"Java-html转pdf"和"Java-htmlתpdf",它们可能是示例代码、依赖库或者其他与转换相关的资源。要使用这些文件,你需要将它们解压缩,并按照项目的结构和需求进行整合。 总之,Java结合Flying ...