`
isiqi
  • 浏览: 16502170 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

自己动手写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);
	}
}

代码页很简单的。

分享到:
评论

相关推荐

    CSDN博客提取器

    程序通过分析CSDN博客源码来生成一些必要的数据,可能在以后使用当中出现爬取不了的情况,可能是CSDN的源码结构修改了。程序只是用于学习之用,严禁用于非法目的而照成CSDN服务器过载。 由于生成PDF的时候需要依赖...

    自己动手写编译器链接器PDF及源码.rar

    《自己动手写编译器链接器》是一本深入解析编译器与链接器工作原理的教程,通过PDF文档和源码实例,为读者提供了一条亲手构建这些关键工具的实践之路。编译器和链接器是软件开发过程中的重要组成部分,它们在程序的...

    CSDN博客提取器修正版

    程序通过分析CSDN博客源码来生成一些必要的数据,可能在以后使用当中出现爬取不了的情况,可能是CSDN的源码结构修改了。程序只是用于学习之用,严禁用于非法目的而照成CSDN服务器过载。 由于生成PDF的时候需要依赖...

    CSDN博客下载器

    【CSDN博客下载器】是一款专为CSDN(China Software Developer Network)平台设计的工具,用于批量下载用户在该平台发布的博客文章。这款软件能够帮助用户方便地保存自己或他人的博客内容,便于离线阅读、资料备份...

    pdf阅读器源码

    学习和分析这样的PDF阅读器源码,开发者不仅可以深入理解PDF文件的内部工作原理,还能掌握C#编程和GUI应用开发的实践经验,这对于任何想要在文档处理领域有所建树的开发者来说都是宝贵的学习资源。

    博客园博文提取器

    6、支持下载的文件保存为 pdf、doc、txt三种格式 7、生成的pdf、doc文件支持图片 8、支持进度显示 #################################################### 制作时间:2012年07月21日 - 2012年07月21日 制 ...

    mupdf 源码

    MuPDF 是一个轻量级、高效的 PDF 阅读器和渲染库,尤其适用于嵌入式系统和移动设备。它由 Artifex Software 公司开发,提供了对 PDF、XPS 和 OpenXPS 文件格式的支持。这款开源软件以其优秀的性能和对低内存需求的...

    2019软件工程GFPGAN源代码分析第二篇(csdn)————程序.pdf

    本文主要分析了2019年软件工程中GFPGAN源代码的第二部分,特别是`inference_gfpgan.py`文件中的代码流程。首先,我们来看一下导入的库: 1. `argparse`:这是一个标准的Python模块,用于解析命令行参数和选项,使得...

    Python使用PDFMiner解析PDF代码实例

    通过上述步骤,我们可以有效地处理PDF文件,为后续的数据处理和分析打下坚实的基础。PDFMiner的强大之处在于它不仅能够提取文本,还能够保持原文档的布局结构,这对于需要保留原文档格式的应用场景尤为重要。

    vc++ 开发实例源码包

    CSDN免积分下载工具 源码 演示了使用CInternetSession去下载资源。 CStatic文字滚动 如题,此实例非常适合学习,重载并自绘了Wnd类,效果是上下文字、图片、文字由大到小和星星闪烁等滚动效果。实例使用了加载类似...

    vc++ 应用源码包_1

    VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++视频捕捉系统 win32下 视频操作。 VC++视频会议系统(完整)有开发文档。使用了系统自带的视频。 Windows...

    vc++ 应用源码包_2

    VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++视频捕捉系统 win32下 视频操作。 VC++视频会议系统(完整)有开发文档。使用了系统自带的视频。 Windows...

    vc++ 应用源码包_6

    VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++视频捕捉系统 win32下 视频操作。 VC++视频会议系统(完整)有开发文档。使用了系统自带的视频。 Windows...

    vc++ 应用源码包_5

    VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++视频捕捉系统 win32下 视频操作。 VC++视频会议系统(完整)有开发文档。使用了系统自带的视频。 Windows...

    vc++ 应用源码包_3

    VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++视频捕捉系统 win32下 视频操作。 VC++视频会议系统(完整)有开发文档。使用了系统自带的视频。 Windows...

    文本搜索器

    初级开发者通过学习和分析这个项目,可以了解安卓应用的基本架构,包括Activity、Intent、Adapter等组件的使用,以及如何处理文件I/O和用户交互。此外,还能学习到如何在实际应用中应用搜索算法,提升编程技能。 总...

    模式识别大作业(基于MATLAB的车牌识别)+程序源码

    1. 图像预处理:这是车牌识别的第一步,包括灰度化、二值化、噪声去除等,目的是将原始的彩色图像转换为更适合处理的格式,以便后续的分析。MATLAB提供了丰富的图像处理工具箱,可以方便地进行这些操作。 2. 特征...

    CBOW多层神经网络分类模型研究.zip

    资源包含文件:论文word和pdf版本+源码及数据 短文本推荐合适的emoji其实可以化归为一个短文本分类问题, 在下面的叙述中将以短文本分类为研究目标. 本文认为这一类的数据挖掘问题都可以化归为一下几个步骤: 1.数据...

Global site tag (gtag.js) - Google Analytics