论坛首页 Java企业应用论坛

介绍一个PDF的生成方案

浏览 151692 次
该帖已经被评为良好帖
作者 正文
   发表时间:2009-11-05  
我修改了其源代码,可以不用考虑楼主所说的那般严重。只是,如何上传修改好并且打包的JAR呢 ?
0 请登录后投票
   发表时间:2009-11-05  
怎样在html中设置分页。
0 请登录后投票
   发表时间:2009-11-05  
中文可以了。

ITextFontResolver fontResolver = renderer.getFontResolver(); 
fontResolver.addFont("C:/Windows/fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test</title>
<style type="text/css">
<!--
body {
	font-family: SimSun; 
	font-size:22px;
	font-style:italic;
	font-weight:bold;
	color:#00F;
}
-->
</style></head>

<body>
显示中文
</body>
</html>
0 请登录后投票
   发表时间:2009-11-05  
修改后的xhtmlrenderer核心包已经在
http://yongboy.iteye.com/blog/510976
上面地址中提供下载,无须显示在CSS中定义字体了,无须如下直接显示定义引入字体:
ITextFontResolver fontResolver = renderer.getFontResolver();  
fontResolver.addFont("C:/Windows/fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

估计会方便一些如我之类的新手吧。
0 请登录后投票
   发表时间:2009-11-06  
narsil 写道
怎样在html中设置分页。


CSS中有相关的分页设置。

实际上我认为这个方案的精髓就在于能够使用HTML/CSS来控制PDF输出。很多朋友所谓的字体问题,分页问题,或者页面设置问题,实际上都可以通过CSS的方案来解决,这也是比较推荐的做法。动不动就去改源码,这个做法决不是什么最佳实践。
2 请登录后投票
   发表时间:2009-11-06  
试用了下,很不错!
也不认同改源码...
0 请登录后投票
   发表时间:2009-11-06  
yongboy 写道
修改后的xhtmlrenderer核心包已经在
http://yongboy.iteye.com/blog/510976
上面地址中提供下载,无须显示在CSS中定义字体了,无须如下直接显示定义引入字体:
ITextFontResolver fontResolver = renderer.getFontResolver();  
fontResolver.addFont("C:/Windows/fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

估计会方便一些如我之类的新手吧。


能否解决一个xhtml里面所有的中文字体,不仅仅是Body里面,也就是说一个xhtml里面多种中文字体。
0 请登录后投票
   发表时间:2009-11-06   最后修改:2009-11-06
	public static void main(String[] args) throws Exception {
		String outputFile = "f:/teste/html/firstdoc.pdf";
		OutputStream os = new FileOutputStream(outputFile);
		ITextRenderer renderer = new ITextRenderer();

		String html = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" /></head><body><p>你好啊!</p><p>这里加入图片</p><p><img src=\"hnd3.jpg\" width=\"139\" height=\"102\" /></p><p><img src=\"hnd3 (2).jpg\" width=\"140\" height=\"95\" /></p><p>测试而已!</p><p>hello the world~</p></body></html>";

		renderer.setDocumentFromString(html);

		// 解决图片的相对路径问题
		renderer.getSharedContext().setBaseURL("file:/F:/teste/html/");

		renderer.layout();
		renderer.createPDF(os);

		os.close();
		System.out.println("生成成功!");
	}

 我这边代码拷贝自楼主,修改一下,如上,没有在html中定义样式。中文显示正常。

 

需要 iTextAsian.jar,以及修改后的源代码包。

 

 附件中有生成PDF

0 请登录后投票
   发表时间:2009-11-06  
页面中图片为jfreechart生成的,生成pdf后图片不显示,已设置了图片相对路径为:
renderer.getSharedContext().setBaseURL("http://localhost:8081/test/");还是不行,请问有什么方法解决 ?
0 请登录后投票
   发表时间:2009-11-06  
yye_javaeye 写道
页面中图片为jfreechart生成的,生成pdf后图片不显示,已设置了图片相对路径为:
renderer.getSharedContext().setBaseURL("http://localhost:8081/test/");还是不行,请问有什么方法解决 ?

你应该设置成获取的绝对路径才行吧
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics