首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > PowerDesigner >

java生成pdf提案总结

2012-10-30 
java生成pdf方案总结java生成pdf方案很多,常用的如下:1. 利用jacob生成pdf:这种方法调用office的本地方法

java生成pdf方案总结
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.关闭输出流

代码如下:

package com.hank.pdfhtml;/** * @author Hank * 2009-12-30 */import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.net.MalformedURLException;import java.net.URL;import org.xhtmlrenderer.pdf.ITextFontResolver;import org.xhtmlrenderer.pdf.ITextRenderer;import com.lowagie.text.DocumentException;import com.lowagie.text.pdf.BaseFont;public class Html2Pdf {private static void addFonts() throws DocumentException, IOException{if(null == renderer) {return;}        // 添加所需的字体        ITextFontResolver fontResolver = renderer.getFontResolver();         URL fontsUrl = Html2Pdf.class.getResource("/com/hank/fonts/");//该文件夹下放所需字体文件        File fonts = new File(fontsUrl.getPath());        File[] fileList = fonts.listFiles();        for(int i=0; i < fileList.length; i++){        fontResolver.addFont(fileList[i].getAbsolutePath(), BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);        }        }public static String print2Pdf(String inputFile) {        String url = null;try {url = new File(inputFile).toURI().toURL().toString();} catch (MalformedURLException e) {return null;}String outputFile = inputFile.substring(0, inputFile.lastIndexOf(".")) + ".pdf";        OutputStream os = null;try {os = new FileOutputStream(outputFile);} catch (FileNotFoundException e) {return null;}        ITextRenderer renderer = null;try {renderer = new ITextRenderer();} catch (Exception e) {return null;}        renderer.setDocument(url);                // 解决图片的相对路径问题        renderer.getSharedContext().setBaseURL("file:/D:/working/HtmlTemp/image/");                renderer.layout();        try {renderer.createPDF(os);} catch (DocumentException e) {return null;}                try {os.close();} catch (IOException e) {return null;}                return outputFile;}        public static void main(String args[]){            String inputFile = "D:/working/HtmlTemp/test.html"; //必须符合W3C标准            Html2Pdf.print2Pdf(inputFile);        }}


3 楼 tengfeineu 2012-07-13   // 解决图片的相对路径问题   renderer.getSharedContext().setBaseURL("file:/D:/working/HtmlTemp/image/"); 

这个linux下不好使 加载不了图片

热点排行