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

下面我讲下处理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);
	}
}

代码页很简单的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值