下面我讲下处理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);
}
}
代码页很简单的。
分享到:
相关推荐
程序通过分析CSDN博客源码来生成一些必要的数据,可能在以后使用当中出现爬取不了的情况,可能是CSDN的源码结构修改了。程序只是用于学习之用,严禁用于非法目的而照成CSDN服务器过载。 由于生成PDF的时候需要依赖...
程序通过分析CSDN博客源码来生成一些必要的数据,可能在以后使用当中出现爬取不了的情况,可能是CSDN的源码结构修改了。程序只是用于学习之用,严禁用于非法目的而照成CSDN服务器过载。 由于生成PDF的时候需要依赖...
6、支持下载的文件保存为 pdf、doc、txt三种格式 7、生成的pdf、doc文件支持图片 8、支持进度显示 #################################################### 制作时间:2012年07月21日 - 2012年07月21日 制 ...
VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++视频捕捉系统 win32下 视频操作。 VC++视频会议系统(完整)有开发文档。使用了系统自带的视频。 Windows...
CSDN免积分下载工具 源码 演示了使用CInternetSession去下载资源。 CStatic文字滚动 如题,此实例非常适合学习,重载并自绘了Wnd类,效果是上下文字、图片、文字由大到小和星星闪烁等滚动效果。实例使用了加载类似...
VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++视频捕捉系统 win32下 视频操作。 VC++视频会议系统(完整)有开发文档。使用了系统自带的视频。 Windows...
VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++视频捕捉系统 win32下 视频操作。 VC++视频会议系统(完整)有开发文档。使用了系统自带的视频。 Windows...
VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++视频捕捉系统 win32下 视频操作。 VC++视频会议系统(完整)有开发文档。使用了系统自带的视频。 Windows...
VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++视频捕捉系统 win32下 视频操作。 VC++视频会议系统(完整)有开发文档。使用了系统自带的视频。 Windows...
资源包含文件:论文word和pdf版本+源码及数据 短文本推荐合适的emoji其实可以化归为一个短文本分类问题, 在下面的叙述中将以短文本分类为研究目标. 本文认为这一类的数据挖掘问题都可以化归为一下几个步骤: 1.数据...
实例137 读取PDF文件中的内容 203 实例138 用iText生成Word文件 205 实例139 利用POI读取Word文件中的内容 208 7.3 字符流 209 实例140 按顺序创建文件 210 实例141 按顺序读取文件 211 实例142 追加文件内容...