sealbird 发表于 2013-1-28 18:07:54

java生成pdf方案总结

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 Hank5. * 2009-12-306. */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.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
页: [1]
查看完整版本: java生成pdf方案总结