易捷 > PDF教程 > PDF开发/编程技术 >

利用 itextsharp 将tiff转成pdf格式,开发tiff转pdf软件方法

分享到:
发布时间:2013-05-21 08:00   浏览次数:

  【摘要】 介绍了在.NET平台中用C#结合itextsharp控件实现TIFF图像文件转换为PDF文件的开发,并给出实现业务的关键代码,希望对于图书馆资源的数字化建设有所帮助。
【关键词】 格式转换 TIFF PDF 图像 数字化 数字图书馆 C# Itextsharp
【分类号】 G250. 72 G354. 4

  目前,图书馆的信息化建设已经从基础硬件建设阶段进入到以数字图书馆[1](DigitalLibrary,DL)为特征的内容建设阶段。资源的数字化、标准化、规范化是该阶段的特点,其中对印刷文献数字化的处理流程如图1所示。
在CALIS[2]以及其他数字图书馆的建设规范中,要求扫描数据格式为TIFF(Tagged Image File Format ),并最终将TIFF格式转换为PDF(Portable DocumentFor-mat)格式存储并上网提供服务。本文结合“四川高校文
献保障体系———特色数据库”本地建库系统的研发,重点讨论在.NET平台实现TIFF文件转换为PDF文件,并给出实现业务的关键代码。


图1 印刷文献数字化处理流程

1 系统设计
1. 1 系统结构
系统由底层系统接口、功能模块、用户界面三个部分组成。底层系统接口主要包括TIFF文件的读取、PDF文件的输出等模块。各功能模块在.NET平台利用C#语言来编程实现分辨率更改、PDF文件参数设置、格式转换等模块。用户界面利用平台支持的标准控件来设计实现与用户的交互。系统的结构如图2。

 

 图2 系统结构图 图3 系统功能图

1. 2 系统功能
本系统主要实现TIFF文件转换为标准PDF文件,系统的功能结构如图3。
(1)文件选择。系统支持对同一目录的单个文件或多个文件的选择,同时支持不同目录的多文件的选择,还必须支持直接从Web或Ftp网站下载文件。
(2)TIFF文件读取。既可以打开单页的TIFF文件,也可以打开多页的TIFF文件,还必须支持各种格式的TIFF文件。
(3)更改分辨率。根据用户的需要,调整当前图像的分辨率或调整整个图片的分辨率。
(4)参数管理。设置是将当前图片转换为一个PDF文件,还是将多个文件转换为一个PDF文件,并按规范同时生成一个24页的PDF文件;设置PDF文件的命名规则;设置PDF文件输出目录,设置PDF文件的版式。
(5)格式转换。转换后的文件要保持原有的版式,要适应各类PDF阅读器,要使生成的PDF文件足够小。
(6)书签生成。转换后的文件要有书签导航功能。
(7)输出控制。将转换后的文件备份到指定的目录或上传到指定的服务器中。

2 系统实现
2. 1 实现原理
系统开发的难点在TIFF文件的读取与格式转换,但由于TIFF与PDF文件标准相当灵活、复杂,因此我们直接在.NET平台与开放源代码的itextsharp[7]函数库基础上编制了软件,以保证对标准的全面支持和兼容。
(1)TIFF图像文件读取,主要利用GDI+( Graphics De-vice Interface Plus)[8]来进行图形输出和显示。GDI+的Imag类封装了对BMP、GIF、JPEG、PNG、TIFF、WMF和EMF图像文件的调入、格式转换以及简单处理的功能。图像操作函数如表1。

  表1 ·NET平台图像操作关键函数名称与功能

名称 功能 备注
new 新建一个对象 System.Drawing.Bitmap
GetFrameCount 获取图片个数 System.Drawing.Bitmap
SelectActiveFrame 获取当前图片 System.Drawing.Bitmap

  (2)格式转换,包括更改分辨率与格式转换,主要利用了itextsharp中的两个类库itextsharp. text和itextsharp. text. pdf。其关键类与功能如表2。itextsharp. text. pdf类库提供了Pd-Writer类与itextsharp. text的document对象关联,用于产生PDF格式的文档,这是进行格式转换的关键所在。实现转换的关键函数如表3。
表2 itextsharp关键类与功能
名称 功能 备注
document类 产生文档对象以便于在其中加入数据 itextsharp. text
image类 向文档对象插入图片数据 itextsharp. text
PdWf riter类 PDF文件操作 itextsharp. tex.t pdf
PdfContentByte类 设置图片在文档对象中的位置 itextsharp. tex.t pdf

  表3 格式转换关键函数名称与功能
名称 功能 备注
getInstance
建立PdWf riter对象与Document对象关联,通过PdWf riter对象将文档写入到磁盘中 PdWf riter类
getInstance 获取当前图像对象实例 Image类
scalePercent 置当前图像的分辨率 Image类
addImage 向文档中添加图像数据 PdfContentByte类
newPage 在document对象中新建一页 document类

2. 2 系统流程
首先,用户进行参数设置,选择并顺序打开,获取文件包含的图像数目,然后读出当前图像的分辨率并根据用户的需要重新率,最后进行格式转换并生成导航书件名保存文件。系统流程如图4。

图4 系统流程图

3 系统开发
3. 1 开发环境
程序开发的硬件环境为一般PC兼容机,操作系统为Windows2000 Server,开发平台为VS.NET2003,语言为C#。同时将下载的itextsharp控件包释放到本地。
3. 2 程序界面
程序的主界面如图5。


图5 程序主界面


3. 3 关键的代码
System.Drawing. Bitmap bm = new System.Drawing. Bitmap(“test.tif”); //打开TIFF文件。
int total = bm.GetFrameCount(FrameDimension. Page); //获取当前文件图像个数。
Documentpdfdoc= newDocument(PageSize.A4, 50, 50, 50, 50);//建立Document对象的实例,并设置Document的大小与边距。
PdWf riter writer = PdWf riter. getInstance(pdfdoc, new FileStream(“c: \tiff2pd.f pdf”, FileMode. Create)); //建立一个PdWf riter对象Writer与document对象关联,通过Writer可以将文档写入到磁盘中。
pdfdoc.Open(); //打开文档。
PdfContentByte cb = writer.DirectContent;
for ( intk = 0; k < tota;l ++k)
{
bm. SelectActiveFrame(FrameDimension. Page, k);
Image img = Image. getInstance(bm, nul,l true);
img. scalePercent(72f /200f* 100); //设置当前图片的分辨率为200dpi。
img. setAbsolutePosition(0, 0);

相关文章推荐

易捷服务大全

在线PDF转换工具

Word

在线Word转PDF

http://wordtopdf.yjpdf.com
 
Excel

在线Excel转PDF

http://exceltopdf.yjpdf.com
 
PPT

在线PPT转PDF

http://ppttopdf.yjpdf.com

本类最新文章

本类本月热门

大家在关注…