自己动手写CSDN博客提取器源码分析之三:处理网页保存为pdf文件

来源:互联网 发布:湖南软件企业评估 编辑:程序博客网 时间:2024/06/12 01:19

转载自: 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下面是我的处理流程:

 

[java] view plaincopy
  1. /** 
  2.  *  
  3.  */  
  4. package com.wyp.html2pdf;  
  5.   
  6. import java.io.File;  
  7. import java.io.FileOutputStream;  
  8. import java.io.StringReader;  
  9.   
  10. import org.zefer.pd4ml.PD4Constants;  
  11. import org.zefer.pd4ml.PD4ML;  
  12. import org.zefer.pd4ml.PD4PageMark;  
  13.   
  14. /** 
  15.  * @author w397090770 
  16.  * Create Data: 2012-7-18 
  17.  * Email: wyphao.2007@163.com 
  18.  *  
  19.  * 版权所有,翻版不究,但是在修改本程序的时候务必加上这些注释。谢谢 
  20.  * 仅用于学习交流之用 
  21.  *  
  22.  * 保存网页为PDF 
  23.  */  
  24. public class saveAsPDF {  
  25.       
  26.       
  27.     // HTML代码来自于HTML文件  
  28.     public void generatePDF_2(File outputPDFFile, String contents, String title)  
  29.             throws Exception {  
  30.           
  31.         File saveFileName = new File(outputPDFFile.getAbsoluteFile() + File.separator + title + ".pdf");  
  32.         if(!saveFileName.exists()){  
  33.             saveFileName.createNewFile();  
  34.         }else{  
  35.             return;  
  36.         }  
  37.           
  38.         FileOutputStream fos = new FileOutputStream(saveFileName);  
  39.         PD4ML pd4ml = new PD4ML();  
  40.         //页眉  
  41.         PD4PageMark headerMark = new PD4PageMark();  
  42.         headerMark.setAreaHeight(30);  
  43.         headerMark.setInitialPageNumber(1);  
  44.         headerMark.setPagesToSkip(1);  
  45.         headerMark.setTitleAlignment(PD4PageMark.CENTER_ALIGN);  
  46.         headerMark.setHtmlTemplate(title); // autocompute  
  47.         pd4ml.setPageHeader(headerMark);  
  48.         //页脚  
  49.         PD4PageMark footerMark = new PD4PageMark();  
  50.         footerMark.setAreaHeight(30);  
  51.         footerMark.setInitialPageNumber(10);  
  52.         footerMark.setHtmlTemplate("武汉大学");  
  53.         pd4ml.setPageFooter(footerMark);  
  54.         //选择纸张大小、字库目录、字体等  
  55.         pd4ml.setPageSize(PD4Constants.A4);  
  56.         pd4ml.useTTF("file:fonts"true);  
  57.         pd4ml.setDefaultTTFs("YouYuan""Arial""Courier New");  
  58.         pd4ml.enableDebugInfo();  
  59.         pd4ml.render(new StringReader(contents), fos);  
  60.     }  
  61. }  

代码页很简单的。
0 0