转载自: http://blog.csdn.net/w397090770/article/details/7768129
下面我讲下处理pdf文件的,这里我用了PD4ML来处理的,原因有几个:(1)、它对CSS的支持做的很好;(2)、可以处理图片(很爽吧)(3)、可以处理中文,不过麻烦一些。基础的过程可以看我的另外一篇帖子java编程将HTML文件转换成PDF文件http://blog.csdn.net/w397090770/article/details/7753166。下面是我的处理流程:
/** * */ package com.wyp.html2pdf; import java.io.File; import java.io.FileOutputStream; import java.io.StringReader; import org.zefer.pd4ml.PD4Constants; import org.zefer.pd4ml.PD4ML; import org.zefer.pd4ml.PD4PageMark; /** * @author w397090770 * Create Data: 2012-7-18 * Email: wyphao.2007@163.com * * 版权所有,翻版不究,但是在修改本程序的时候务必加上这些注释。谢谢 * 仅用于学习交流之用 * * 保存网页为PDF */ public class saveAsPDF { // HTML代码来自于HTML文件 public void generatePDF_2(File outputPDFFile, String contents, String title) throws Exception { File saveFileName = new File(outputPDFFile.getAbsoluteFile() + File.separator + title + ".pdf"); if(!saveFileName.exists()){ saveFileName.createNewFile(); }else{ return; } FileOutputStream fos = new FileOutputStream(saveFileName); PD4ML pd4ml = new PD4ML(); //页眉 PD4PageMark headerMark = new PD4PageMark(); headerMark.setAreaHeight(30); headerMark.setInitialPageNumber(1); headerMark.setPagesToSkip(1); headerMark.setTitleAlignment(PD4PageMark.CENTER_ALIGN); headerMark.setHtmlTemplate(title); // autocompute pd4ml.setPageHeader(headerMark); //页脚 PD4PageMark footerMark = new PD4PageMark(); footerMark.setAreaHeight(30); footerMark.setInitialPageNumber(10); footerMark.setHtmlTemplate("武汉大学"); pd4ml.setPageFooter(footerMark); //选择纸张大小、字库目录、字体等 pd4ml.setPageSize(PD4Constants.A4); pd4ml.useTTF("file:fonts", true); pd4ml.setDefaultTTFs("YouYuan", "Arial", "Courier New"); pd4ml.enableDebugInfo(); pd4ml.render(new StringReader(contents), fos); } }
代码页很简单的。