[置顶] iTextSharp.dll用于合并的实战实例
2017-02-24 13:41
399 查看
iTextSharp.dll应该是目前开源里面比较好的第三方开源库,老外目前在GitHub上面维护的比较勤快。关注的人也比较多,支持的功能包括合并,切割和编辑都还不错。公司最近有一个跟PDF相关的项目,自己要开发底层功能,需要了解很详细的PDF文档规范,真这么做下去基本完菜,对比了几个开源第三方库,包括向iTexSharp,PDFSharp,这些主要是基于C#,很方便,比java,C++的要容易上手得多。
我们的这个项目是跟PDF合并相关,第三方的合并器很多,包括向一些简单的PDF合并器,我参照了下目前国外比较流行好用的一个产品,PDF Merge Pro作为我们这个项目的参考,因为这个产品的功能相对比较完善,正好适合我们公司的产品,用以借鉴开发PDF的合并功能。
这个PDF合并的功能折腾了大半个月,基本上实现并且交付,里面的部分我觉得比较不错的功能点,当然主要是PDF合并功能,包括对iTextSharp的引用,作为代码片段放出来,作为参考。
借鉴产品截图
我们的这个项目是跟PDF合并相关,第三方的合并器很多,包括向一些简单的PDF合并器,我参照了下目前国外比较流行好用的一个产品,PDF Merge Pro作为我们这个项目的参考,因为这个产品的功能相对比较完善,正好适合我们公司的产品,用以借鉴开发PDF的合并功能。
这个PDF合并的功能折腾了大半个月,基本上实现并且交付,里面的部分我觉得比较不错的功能点,当然主要是PDF合并功能,包括对iTextSharp的引用,作为代码片段放出来,作为参考。
PageRangeParser pageRangeParser = new PageRangeParser(pdfFiles[fileIndex].Reader.NumberOfPages, pageRange); pageRangeParser.TryParse(out pageRanges); for(int index = 0; index < pageRanges.Length; index++) { Helper.PageRange currentPageRange = pageRanges[index]; if (currentPageRange.Pages != null) { int separatePageIndex = 0; while (separatePageIndex < currentPageRange.Pages.Length) { var realPageIndex = currentPageRange.Pages[separatePageIndex]; destinationDoc.SetPageSize(pdfFiles[fileIndex].Reader.GetPageSizeWithRotation(realPageIndex)); destinationDoc.NewPage(); page = writer.GetImportedPage(pdfReader, realPageIndex); separatePageIndex++; pageNumber++; } } else if (currentPageRange.PageFrom <= currentPageRange.PageTo) { int currentPage = currentPageRange.PageFrom; while(currentPage <= currentPageRange.PageTo) { destinationDoc.SetPageSize(pdfFiles[fileIndex].Reader.GetPageSizeWithRotation(currentPage)); destinationDoc.NewPage(); page = writer.GetImportedPage(pdfReader, currentPage); currentPage++; pageNumber++; } } else if (currentPageRange.PageFrom > currentPageRange.PageTo) { int currentPage = currentPageRange.PageTo; while (currentPage <= currentPageRange.PageFrom) { destinationDoc.SetPageSize(pdfFiles[fileIndex].Reader.GetPageSizeWithRotation(currentPage)); destinationDoc.NewPage(); page = writer.GetImportedPage(pdfReader, currentPage); currentPage++; pageNumber++; } }
借鉴产品截图
相关文章推荐
- [置顶] iTextsharp.dll用于分割的实战实例
- [置顶] (0)【机器学习】机器学习综述与“Hello World”实战(附带5个实例)
- [置顶] nodejs入门实战教程(01)——从上传实例出发
- [置顶] mysql分库分表实战及php代码操作完整实例
- Java教程 实战学习Struts实例
- IIS6+TOMCAT整合,实战实例!
- C#多线程编程实例实战
- 编程实例------打造武装部队(实战接口)
- 用于 Excel 的代码实例 (C#)
- DOTNETARX(一个用于.net开发AutoCAD程序的类库)实例教学
- ospf实例分析 (子网掩码实战)
- Java教程 实战学习Struts实例
- Java教程 实战学习Struts实例
- JSP和JSF双剑合并 打造完美Web应用-JSP实例学习教程
- JavaScript字符串对象的concat方法实例(用于连接两个或多个字符串)
- 用于合并网页中表格和转换写成Excel文件的JS函数,很有用
- C#多线程编程实例实战(2)
- 实例分析ASP上传漏洞入侵实战及扩展
- Java教程 实战学习Struts实例
- (oracle学习笔记)游标实例:通过游标遍历合并数据