`
lihongyang66
  • 浏览: 75020 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

html转pdf

    博客分类:
  • JAVA
阅读更多

一个是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

分享到:
评论
1 楼 Hai_Feng1108 2014-07-03  
请教:
fontResolver.addFontDirectory(ServletActionContext.getRequest().getRealPath("/fonts/"), BaseFont.NOT_EMBEDDED); 

我想使用多种字体,怎么使用??addFontDirectory这个方法不能使用??

相关推荐

    android_HTML转PDF

    本项目“android_HTML转PDF”提供了一个解决方案,它支持中文字符显示以及单独处理图片的功能。以下是对这个项目的详细解析: 1. **HTML与PDF的转换原理** HTML是一种标记语言,用于创建和展示网页内容,而PDF...

    go 语言实现 html 转 pdf

    总结起来,Go语言实现HTML转PDF涉及的关键技术包括HTML解析、浏览器渲染以及PDF生成。借助如gowebsite2pdf、gohpvg这样的库,开发者可以轻松地在Go环境中搭建起一个高效的HTML到PDF转换服务。不过,需要注意的是,...

    html转pdf.zip

    这个"html转pdf.zip"压缩包很可能包含一个或多个工具或脚本,用于将HTML文档转换为便携式文档格式(PDF)。下面我们将深入探讨HTML与PDF之间的转换原理、常见工具以及转换过程中的关键知识点。 首先,理解HTML和PDF...

    离线浏览,HTML转PDF非常好的工具

    离线浏览和HTML转PDF是网络技术中非常实用的功能,特别是在需要保存网页内容或在无网络环境下阅读的情况下。本文将详细介绍这一领域的知识,包括为何需要转换、如何操作以及使用工具的注意事项。 首先,理解离线...

    vue,html转pdf,下载导出及打印

    "Vue 实现 HTML 转 PDF 下载导出及打印" 在本文中,我们将介绍如何使用 Vue.js 实现 HTML 转 PDF 下载导出及打印。这个功能可以在项目中实现报表下载、打印等功能。本文将从插件安装、图片转换、HTML 转换为 PDF、...

    Java 使用itext将html转pdf并下载demo

    这个“Java使用iText将html转pdf并下载demo”的主题将深入讲解如何使用iText库实现这一功能。 首先,我们需要理解iText的基本用法。iText库提供了多种API,可以用来创建PDF文档、添加文本、图像、表格等元素。在...

    基于qt的html转换pdf代码

    在HTML转PDF的过程中,QPrinter被用来设置PDF输出的参数,如纸张大小、方向等,QPainter则负责将网页内容绘制到打印机对象上。 4. **C++编程**:这个项目是用C++语言实现的,C++是一种强大的、面向对象的编程语言,...

    java实现将html转pdf,并在指定位置添加印章

    本文将详细讲解如何使用Java实现这一功能,包括HTML转PDF以及在PDF中添加印章。 首先,我们需要一个库来处理HTML转PDF的任务。在Java中,一个常用的库是`Flying Saucer`,它能够将HTML渲染为PDF格式。`Flying ...

    html转pdf三种方式 js 和itext所需js和jar

    前端实现HTML转PDF,主要是通过JavaScript库,如`html2canvas`和`jspdf`。`html2canvas`可以将HTML元素渲染为Canvas,然后`jspdf`可以将Canvas内容转化为PDF。首先,你需要引入这两个库的文件。例如: ```html ...

    HTML转PDF插件

    HTML转PDF插件是网页内容转化为可打印或便于离线阅读的PDF文档的工具。在IT领域,这种转换经常被用于生成报告、手册或者网页的存档。在本例中,我们将关注一个名为"wkhtmltoX"的插件,它在Windows和Linux操作系统上...

    html转pdf工具

    HTML转PDF工具是一种实用软件,它能够将网页或者HTML文档转换为PDF格式,方便用户进行打印、保存或分享。在互联网环境中,HTML是最常见的网页展示语言,而PDF则是普遍用于离线阅读和打印的标准格式。这种转换过程...

    iText html转pdf jar包

    在这个例子中,提供的`itext-2.0.6.jar`是iText的一个旧版本,可能不包含HTML转PDF的功能,你可能需要更新到更现代的版本,如iText 5.x或7.x,这些版本通常已经包含了HTML处理的组件。 2. **创建PDF文档**:使用`...

    java测试工具html转pdf

    在“java测试工具html转pdf”这个主题中,我们主要关注的是如何使用Java来实现HTML文档向PDF格式的转换。这涉及到对HTML的理解、PDF的生成原理以及Java中的相关库和框架。 首先,HTML(超文本标记语言)是网页设计...

    如何解决java html转pdf图片不显示问题的源码范例合集new(由浅入深代码范例和详细说明).docx

    Java HTML 转 PDF 图片不显示问题解决方案详解 在 Java 开发中,经常需要将 HTML 转换为 PDF,并希望在生成的 PDF 中正确显示 HTML 中的图片。但是,由于 HTML 和 PDF 的格式差异,可能会遇到图片不显示的问题。...

    JAVA HTML转pdf

    总的来说,`JAVA HTML转pdf`涉及到的关键知识点包括:`iTextPDF`库的使用,`Html2Pdf`扩展库,HTML读取与解析,PDF生成,以及可能的自定义配置。通过熟练掌握这些内容,你可以方便地在Java应用程序中实现HTML到PDF的...

    phantomjs html转pdf 完美版本

    本资源提供的"phantomjs html转pdf 完美版本"是利用PhantomJS实现高质量的HTML到PDF转换的一个实例。 PhantomJS的工作原理是通过加载HTML页面,然后模拟浏览器渲染页面,最后将渲染后的结果保存为PDF文件。这个过程...

    HTML转PDF格式

    - `iText`库则是一个强大的PDF处理库,可以用来创建、修改PDF文档,也可用于HTML转PDF。 4. **使用WebView转换**: - Android的WebView组件可以加载和渲染HTML内容,通过调用其`WebView#print()`方法,可以利用...

    html转PDF源代码

    HTML转PDF的过程是为了将网页内容以更便于阅读和保存的方式呈现。 在源码中,可能采用了开源库或API来实现这一功能。常见的库有wkhtmltopdf、PhantomJS、Puppeteer(基于Chrome的Headless模式)等。这些工具通常...

    java后端实现html转pdf的工具类,pd4ml

    Java后端实现HTML转PDF是常见的需求,尤其在生成报告、文档或网页打印场景中。PD4ML是一款高效且功能强大的Java库,专门用于将HTML内容转换为高质量的PDF文档。这个工具类的出现,使得开发者能够利用Java方便地处理...

Global site tag (gtag.js) - Google Analytics