java生成pdf方案总结
文章分类:Java编程
java生成pdf方案很多,常用的如下:
1. 利用jacob生成pdf:这种方法调用office的本地方法实现对pdf API的操作,只能在windows平台使用
2. 利用openoffice生成pdf:openoffice是开源软件且能在windows和linux平台下运行
3. itext + flying saucer生成pdf:itext和flying saucer都是免费开源的,且与平台无关,结合css和velocity技术,可以很好的实现。
我们重点介绍第三种方案。它实现的步骤是非常简单的:
1.新建一个ITextRenderer类
2.添加字体
3.设置ITextRenderer的源文档
4.调用layout()方法
5.调用createPdf()方法
6.关闭输出流
代码如下:
Java代码
1.package com.hank.pdfhtml;
2.
3./**
4. * @author Hank
5. * 2009-12-30
6. */
7.
8.import java.io.File;
9.import java.io.FileNotFoundException;
10.import java.io.FileOutputStream;
11.import java.io.IOException;
12.import java.io.OutputStream;
13.import java.net.MalformedURLException;
14.import java.net.URL;
15.
16.import org.xhtmlrenderer.pdf.ITextFontResolver;
17.import org.xhtmlrenderer.pdf.ITextRenderer;
18.
19.import com.lowagie.text.DocumentException;
20.import com.lowagie.text.pdf.BaseFont;
21.
22.public class Html2Pdf {
23. private static void addFonts() throws DocumentException, IOException{
24. if(null == renderer) {
25. return;
26. }
27.
28. // 添加所需的字体
29. ITextFontResolver fontResolver = renderer.getFontResolver();
30.
31. URL fontsUrl = Html2Pdf.class.getResource("/com/hank/fonts/");//该文件夹下放所需字体文件
32. File fonts = new File(fontsUrl.getPath());
33. File[] fileList = fonts.listFiles();
34. for(int i=0; i < fileList.length; i++){
35. fontResolver.addFont(fileList[i].getAbsolutePath(), BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
36. }
37.
38. }
39.
40. public static String print2Pdf(String inputFile) {
41. String url = null;
42. try {
43. url = new File(inputFile).toURI().toURL().toString();
44. } catch (MalformedURLException e) {
45. return null;
46. }
47.
48.
49. String outputFile = inputFile.substring(0, inputFile.lastIndexOf(".")) + ".pdf";
50.
51. OutputStream os = null;
52. try {
53. os = new FileOutputStream(outputFile);
54. } catch (FileNotFoundException e) {
55.
56. return null;
57. }
58.
59. ITextRenderer renderer = null;
60. try {
61. renderer = new ITextRenderer();
62. } catch (Exception e) {
63. return null;
64. }
65.
66. renderer.setDocument(url);
67.
68. // 解决图片的相对路径问题
69. renderer.getSharedContext().setBaseURL("file:/D:/working/HtmlTemp/image/");
70.
71. renderer.layout();
72. try {
73. renderer.createPDF(os);
74. } catch (DocumentException e) {
75. return null;
76. }
77.
78. try {
79. os.close();
80. } catch (IOException e) {
81. return null;
82. }
83.
84. return outputFile;
85. }
86.
87. public static void main(String args[]){
88. String inputFile = "D:/working/HtmlTemp/test.html"; //必须符合W3C标准
89. Html2Pdf.print2Pdf(inputFile);
90. }
91.}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/strawbingo/archive/2010/10/14/5941203.aspx
分享到:
相关推荐
基于Java的测试文档自动生成方案.pdf
历经一个月总结使用java实现pdf文件的电子签字+盖章+防伪二维码+水印+PDF文件加密的全套解决方案
使用java生成动态数据的pdf文件 页尾有截图,一目了然 方案优点 纯vue编写,避免繁杂且不直观的java api操作,java只做转换和提供数据源,不参与pdf中渲染逻辑控制 使用vue进行数据映射和页面渲染,符合目前主流前端...
java html生成pdf的解决方案,包括常见错误的处理,如中文问题、css路径、图片,内有测试例子等。是java中pdf方案的好帮手哦
该代码提供了word、excel、pdf三种类型的文档生成方案,其中word文档使用“freemarker + xml + 模板”技术;excel使用“POI + 模板”技术;pdf使用“freemarker + itext + flying saucer”技术
Java使用Spire讲网页保存为PDF并去除Evaluation Warning水印方案,https://blog.csdn.net/kewen_123/article/details/121025630
最近开发时需要用swagger生成文档,经多次测试,形成了一个完整的生成方案,供大家参考。可以在生成的文档中处定义章节。完整调试,保证可用。 工程后,操作步聚如下: 1、修改生成最终文档的索引文件index.adoc,...
Java完美生成的解决方案[参考].pdf
基于作者本人的项目经验总结的ZPL基础以及和Java web项目的集成,其中涉及到了ZPL翻页、zpl代码生成、zpl打印机调用等开发遇到的问题和解决方案,对于Java开发者或是ZPL基础开发人员来说,是很好的入门教程。
而目前开源的组件中,Itext的确是一个First Choice,如果各位单纯是做把图片转成PDF或者自己写了Velocity或者FreeMarker模板生成了HTML是非常推荐直接用Itext来进行的。而如果,大家像我这样已经有前人写好了HTML...
java实现根据html生成pdf,提供项目中生成合同方案。共勉~~~
能稳定运行,windows 平台,ActiveXComponent技术
用于将pdf文件生成其缩略图以供显示时使用,很实用的类似于百度文库中的文档里列表的图片一样
方案优点 1.纯html编写,避免繁杂且不直观的java api操作,java只做转换和提供数据源,不参与pdf中渲染逻辑控制 2.使用vue进行数据映射和页面渲染,符合前端开发思路,前后分离
Aspose.Total是Aspose公司旗下的最全的一套office文档管理方案,主要提供.net跟java两个开发语言的控件套包,通过它,我们可以有计划地操纵一些商业中最流行的文件格式:Word, Excel, PowerPoint, Project,等office...
对企业合同word模版,可通过java 程序实现生成word文件,然后再通过word转成pdf实现。本实例的方案,可实现模版到word文件的转换。附件有代码和效果图。
java实现pdf转word。纯免费开源。pdf解析完会生成word文件和图片文件夹。无页码限制,文本类型生成到word中,图片生成到图片文件夹中。 弊端:需手动将图片与文本整合成一个word文件。 仅提供一个pdf转word的实现...
用于解决PDF乱码的java文件 比网上流传的gbk2uni功能更强 需要安装JRE/JDK 1.5+
Java生成条形码的方案 -- barcode4j、zxing barcode4j开源Java条形码生成库。支持多种编码格式,比如:code-39,code-128等 http://barcode4j.sourceforge.net/ zxing是由google开源的1D/2D编解码类库。目标是能够对...