一个是xhtmlrenderer
https://xhtmlrenderer.dev.java.net/
LGPL协议
另外一个是
http://www.allcolor.org/YaHPConverter/
LGPL协议
都是基于ITEXT的
2010-9-19注:
开始用YaHPConverter发现好像不支持标签,而且用起来很费劲,改用xhtmlrenderer感觉很舒服。
public class HtmlToPdfUtil {
private HtmlToPdfUtil() {
}
private static Configuration cfg = new Configuration();// freemarks
static {
cfg.setObjectWrapper(new DefaultObjectWrapper());
cfg.setDefaultEncoding("utf-8");
try {
cfg.setDirectoryForTemplateLoading(new File(ServletActionContext
.getRequest().getRealPath("/WEB-INF/template/")));
} catch (IOException e) {
throw new RuntimeException("设置模板路径错误!");
}
}
public static InputStream convert(String template, Map data)
throws DocumentException, IOException, TemplateException {
StringWriter sout = new StringWriter();
Template t = cfg.getTemplate(template);
t.setEncoding("utf-8");
t.process(data, sout);
ITextRenderer renderer = new ITextRenderer();
// 解决中文支持问题
ITextFontResolver fontResolver = renderer.getFontResolver();
fontResolver.addFont(ServletActionContext.getRequest().getRealPath(
"/fonts/ARIALUNI.TTF"), BaseFont.IDENTITY_H,
BaseFont.NOT_EMBEDDED);
// fontResolver.addFontDirectory(ServletActionContext.getRequest()
// .getRealPath("/fonts/"), BaseFont.NOT_EMBEDDED);
renderer.setDocumentFromString(sout.getBuffer().toString());
// 解决图片的相对路径问题
renderer.getSharedContext().setBaseURL(
new File(ServletActionContext.getRequest().getRealPath("/"))
.toURI().toURL().toString());
System.out.println(new File(ServletActionContext.getRequest()
.getRealPath("/")).toURI().toURL().toString());
ByteArrayOutputStream out = new ByteArrayOutputStream();
renderer.layout();
renderer.createPDF(out, true);
return new ByteArrayInputStream(out.toByteArray());
}
}
模板:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style type="text/css">
body {
font-family: Arial Unicode MS;
}
</style>
<title>书皮</title>
<style type="text/css">
@page {
size: a4 portrait;
margin: 20mm 10mm;
padding: 1em;
@top-left {content: element(header);}
@bottom-left{content: element(footer);}
@bottom-center{content: counter(page) " / " counter(pages);}
@bottom-right{content: "www.quidos.co.uk";}
}
@page blank {
size: a4 portrait;
margin: 20mm 10mm;
padding: 1em;
@top-left { content: normal }
@bottom-left { content: normal }
@top-right { content: normal }
@bottom-right {content: normal }
@bottom-center{content: normal }
}
/*header as footer will automatically icluded in each pdf printed page*/
#header { position: running(header);}
#footer { display: block; position: running(footer);}
#pagenumber:before {content: counter(page);}
#pagecount:before {content: counter(pages);}
/* Used for generating Table of content */
#toc a::after { content: leader('.') target-counter(attr(href), page); }
/* Use this class for first level titles */
.page_break_before{ page-break-before: always; }
/* Use this class for forcing page break inside pdf */
.page_breaker{page-break-after:always;}
.blank { page : blank; }
</style>
<bookmarks>
<bookmark name="test1" href="#test1" />
<bookmark name="test2" href="#test2">
<bookmark name="test3" href="#test3">
</bookmark>
<bookmark name="test4" href="#test4">
</bookmark>
</bookmark>
</bookmarks>
</head>
<body>
<div style="font-family: Arial Unicode MS;" id="test1">
<input name="testInput" type="hidden" value="test value" />
<p>
项目编号:
<span style="border-bottom: black solid 1px;">{xiangmubianhao}</span>
</p>
<p>
<span style=""><br/> </span>
</p>
</div>
</body>
</html>
参考http://www.iteye.com/topic/509417
分享到:
相关推荐
本项目“android_HTML转PDF”提供了一个解决方案,它支持中文字符显示以及单独处理图片的功能。以下是对这个项目的详细解析: 1. **HTML与PDF的转换原理** HTML是一种标记语言,用于创建和展示网页内容,而PDF...
总结起来,Go语言实现HTML转PDF涉及的关键技术包括HTML解析、浏览器渲染以及PDF生成。借助如gowebsite2pdf、gohpvg这样的库,开发者可以轻松地在Go环境中搭建起一个高效的HTML到PDF转换服务。不过,需要注意的是,...
这个"html转pdf.zip"压缩包很可能包含一个或多个工具或脚本,用于将HTML文档转换为便携式文档格式(PDF)。下面我们将深入探讨HTML与PDF之间的转换原理、常见工具以及转换过程中的关键知识点。 首先,理解HTML和PDF...
离线浏览和HTML转PDF是网络技术中非常实用的功能,特别是在需要保存网页内容或在无网络环境下阅读的情况下。本文将详细介绍这一领域的知识,包括为何需要转换、如何操作以及使用工具的注意事项。 首先,理解离线...
"Vue 实现 HTML 转 PDF 下载导出及打印" 在本文中,我们将介绍如何使用 Vue.js 实现 HTML 转 PDF 下载导出及打印。这个功能可以在项目中实现报表下载、打印等功能。本文将从插件安装、图片转换、HTML 转换为 PDF、...
这个“Java使用iText将html转pdf并下载demo”的主题将深入讲解如何使用iText库实现这一功能。 首先,我们需要理解iText的基本用法。iText库提供了多种API,可以用来创建PDF文档、添加文本、图像、表格等元素。在...
在HTML转PDF的过程中,QPrinter被用来设置PDF输出的参数,如纸张大小、方向等,QPainter则负责将网页内容绘制到打印机对象上。 4. **C++编程**:这个项目是用C++语言实现的,C++是一种强大的、面向对象的编程语言,...
本文将详细讲解如何使用Java实现这一功能,包括HTML转PDF以及在PDF中添加印章。 首先,我们需要一个库来处理HTML转PDF的任务。在Java中,一个常用的库是`Flying Saucer`,它能够将HTML渲染为PDF格式。`Flying ...
前端实现HTML转PDF,主要是通过JavaScript库,如`html2canvas`和`jspdf`。`html2canvas`可以将HTML元素渲染为Canvas,然后`jspdf`可以将Canvas内容转化为PDF。首先,你需要引入这两个库的文件。例如: ```html ...
HTML转PDF插件是网页内容转化为可打印或便于离线阅读的PDF文档的工具。在IT领域,这种转换经常被用于生成报告、手册或者网页的存档。在本例中,我们将关注一个名为"wkhtmltoX"的插件,它在Windows和Linux操作系统上...
HTML转PDF工具是一种实用软件,它能够将网页或者HTML文档转换为PDF格式,方便用户进行打印、保存或分享。在互联网环境中,HTML是最常见的网页展示语言,而PDF则是普遍用于离线阅读和打印的标准格式。这种转换过程...
在这个例子中,提供的`itext-2.0.6.jar`是iText的一个旧版本,可能不包含HTML转PDF的功能,你可能需要更新到更现代的版本,如iText 5.x或7.x,这些版本通常已经包含了HTML处理的组件。 2. **创建PDF文档**:使用`...
在“java测试工具html转pdf”这个主题中,我们主要关注的是如何使用Java来实现HTML文档向PDF格式的转换。这涉及到对HTML的理解、PDF的生成原理以及Java中的相关库和框架。 首先,HTML(超文本标记语言)是网页设计...
Java HTML 转 PDF 图片不显示问题解决方案详解 在 Java 开发中,经常需要将 HTML 转换为 PDF,并希望在生成的 PDF 中正确显示 HTML 中的图片。但是,由于 HTML 和 PDF 的格式差异,可能会遇到图片不显示的问题。...
总的来说,`JAVA HTML转pdf`涉及到的关键知识点包括:`iTextPDF`库的使用,`Html2Pdf`扩展库,HTML读取与解析,PDF生成,以及可能的自定义配置。通过熟练掌握这些内容,你可以方便地在Java应用程序中实现HTML到PDF的...
本资源提供的"phantomjs html转pdf 完美版本"是利用PhantomJS实现高质量的HTML到PDF转换的一个实例。 PhantomJS的工作原理是通过加载HTML页面,然后模拟浏览器渲染页面,最后将渲染后的结果保存为PDF文件。这个过程...
- `iText`库则是一个强大的PDF处理库,可以用来创建、修改PDF文档,也可用于HTML转PDF。 4. **使用WebView转换**: - Android的WebView组件可以加载和渲染HTML内容,通过调用其`WebView#print()`方法,可以利用...
HTML转PDF的过程是为了将网页内容以更便于阅读和保存的方式呈现。 在源码中,可能采用了开源库或API来实现这一功能。常见的库有wkhtmltopdf、PhantomJS、Puppeteer(基于Chrome的Headless模式)等。这些工具通常...
Java后端实现HTML转PDF是常见的需求,尤其在生成报告、文档或网页打印场景中。PD4ML是一款高效且功能强大的Java库,专门用于将HTML内容转换为高质量的PDF文档。这个工具类的出现,使得开发者能够利用Java方便地处理...