利用itext2.0.8老版本对html生成pdf,支持中英文

摘要: 为什么要用itext-2.x版本,现在不是已经很高版本了吗?原因在于授权问题,在2.x版本的时候才是真正意义上的开源免费,而且可以商业应用,后来的都是要许可的。所以用了老版本测试,其实很多年前以前我用过 itext 的api直接生成过很多PDF, 其实也还蛮好用。但对于开发人员来说,更好的做法应该是通过HTML页面直接生成PDF. 至于HTML页面的生成,你可以利用freemarker 等都可以,这不是今天记录的重点。 今天重点是记录把html生成PDF, 并且还要支持中英文. 文章是参考别人来的,自己只是下载测试了一下而已。

为什么要用itext-2.x版本,现在不是已经很高版本了吗?原因在于授权问题,在2.x版本的时候才是真正意义上的开源免费,而且可以商业应用,后来的都是要许可的。所以用了老版本测试,其实很多年前以前我用过 itext 的api直接生成过很多PDF, 其实也还蛮好用。但对于开发人员来说,更好的做法应该是通过HTML页面直接生成PDF. 至于HTML页面的生成,你可以利用freemarker 等都可以,这不是今天记录的重点。 今天重点是记录把html生成PDF, 并且还要支持中英文. 文章是参考别人来的,自己只是下载测试了一下而已。



import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import org.xhtmlrenderer.pdf.ITextRenderer;
import com.lowagie.text.pdf.BaseFont;

public class App {
	public void createPdf() throws Exception {
		// step 1
		String inputFile = "Real.html";
		String url = new File(inputFile).toURI().toURL().toString();
		String outputFile = "Real.pdf";
		System.out.println(url);
		// step 2
		OutputStream os = new FileOutputStream(outputFile);
		ITextRenderer renderer = new ITextRenderer();
		renderer.setDocument(url);		

		// step 3 解决中文支持, linux 下可以复制字体到 linux 字体目录下。
		String osName = System.getProperty("os.name").toLowerCase();	
		org.xhtmlrenderer.pdf.ITextFontResolver fontResolver = renderer.getFontResolver();
		if (osName.startsWith("win")) {
			fontResolver.addFont("c:/Windows/Fonts/simsun.ttc", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);		
		} else {
			fontResolver.addFont("linux 下的路径", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);	
		}
		renderer.layout();
		renderer.createPDF(os);
		os.close();		
		System.out.println("create pdf done!!");
	}


	public static void main(String[] args) throws Exception {
		App app = new App();
		app.createPdf();
	}

}

利用itext,将html生成pdf源码下载:
itext-html-pdf-source-code

另外还可以参考这篇文章 http://www.yihaomen.com/article/java/490.htm

上一篇: 用pdfbox 读取pdf文档
下一篇: Django开发注意事项,新手必看(转)

Avatar

周杰伦 评论于: 2017-08-25

哎哟不错哦[face51]
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号