Aspose.Pdf合并PDF文件
使用Aspose.Pdf
类库,有很多种方法可以合并PDF文件,这里简单介绍小生见到的几种:
Doucment.Pages.Add
PdfFileEditor.Append
PdfFileEditor.Concatenate
Doucment.Pages.Add
要合并几个PDF文件,实际上就是把文档里的页合并到同一个文件里面,
所以可以打开PDF文件,简单的把其他文件的页面添加即可
Doucment pdfdoc1 = new Doucment("input.pdf");
Doucment pdfdoc2 = new Doucment("input.pdf");pdfdoc1.Pages.Add(pdfdoc2.Pages);pdfdoc1.Save("output.pdf");
PdfFileEditor.Append
基本思路和上面是一样的,讲一个文件的页面添加到另一个文件末尾,
但是调用这个方法需要指定输入文件,要添加的文件,以及要添加的页数范围和输出文件
PdfFileEditor.Append(input, ports, startpage, endpage, output)
input
输入文件,可以是String
类型的文件路径,也可以是Stream
类型的文件数据流ports
要添加的文件,可以是一个文件,也可以是一个数组,类型同input
一样可以是String
也可以是Stream
startpage
和endpage
要添加的页数范围,这个范围是指所有ports
放在一起的页数范围
例如:ports
有三个文件,分别有3页,4页,5页,指定startpage=1
和endpage=4
,
则会添加第一个文件的所有页面和第二个文件的第一页output
输出文件,同input
,可以是String
和Stream
类型,在ports
维数组时也可以是HttpResponse
类型
PdfFileEditor pdfeditor = new PdfFileEditor();// 将input2.pdf的第一页添加到input1.pdf末尾并输出output.pdf
pdfeditor.Append("input1.pdf", "input2.pdf", 1, 1, "output.pdf");FileStream input1 = new FileStream("input1.pdf", FileMode.Open);
FileStream input2 = new FileStream("input2.pdf", FileMode.Open);
FileStream output = new FileStream("output.pdf", FileMode.Open);
pdfeditor.Append(input1, input2, 1, 1, output);// 将input2.pdf、input3.pdf的前6页添加到input1.pdf末尾并输出output.pdf
String[] ports = new String[]{"input2.pdf", "input3.pdf"};
pdfeditor.Append("input1.pdf", ports, 1, 6, "output.pdf");FileStream input1 = new FileStream("input1.pdf", FileMode.Open);
FileStream[] ports = new FileStream[]{new FileStream("input2.pdf", FileMode.Open),new FileStream("input3.pdf", FileMode.Open)
};
FileStream output = new FileStream("output.pdf", FileMode.Open);
pdfeditor.Append(input1, ports, 1, 6, output);// 将结果输出到HTTP响应
pdfeditor.Append(input1, ports, 1, 6, HttpContext.Current.Response);
PdfFileEditor.Concatenate
Concatenate
方法与Append
的调用方式类似,也支持一个或多个路径String
或数据流Stream
输入,
输出到一个路径String
、数据流Stream
或HTTP请求响应HttpResponse
,
但是并不支持合并页数的指定,会将输入文件一个接着一个的合并,其重载列表如下
// 将两个文件合并成一个输出
Concatenate(Stream, Stream, Stream)
Concatenate(String, String, String)// 多个文件合并成一个
Concatenate(Stream[], Stream)
Concatenate(Stream[], HttpResponse)
Concatenate(String[], String)
Concatenate(String[], HttpResponse)
Concatenate(Document[], Document)// 前方高能
Concatenate(Stream, Stream, Stream, Stream)
Concatenate(String, String, String, String)
其中四个参数的重载方法,允许将两个文件交叉的合并成一个文件并用指定页填充空白页,
举例来说,加入input1.pdf有6页p1, p2, p3, p4, p5, p6
,input2.pdf有3页p1', p2', p3'
,
再加上空白页blank.pdf,则输出为p1, p1', p2, p2', p3, p3', p4, blank, p5, blank, p6
,
注意这里因为没有p4', p5'
所以使用blank
页来代替
PdfFileEditor pdfeditor = new PdfFileEditor();
pdfeditor.Concatenate("input1.pdf", "input2.pdf", "blank.pdf", "output.pdf");
另外,因为小生的业务需求,需要在pdf合成完毕之后删除源文件,
所以就在执行完Concatenate
方法后直接调用File.Delete
方法删除文件,
但是却报错了,在看了API文档之后才了解到,需要设置
PdfFileEditor.CloseConcatenateStreams = true;
,
在合成完毕之后,关闭Stream
。
参考链接
Concatenate PDF Files
Append PDF files
Concatenate PDF Files with Blank PDF Using File Paths (Facades)
PdfFileEditor Class
转载于:https://www.cnblogs.com/baiyangcao/p/Aspose-pdf-merge.html
Aspose.Pdf合并PDF文件相关推荐
- 【python批量处理pdf】pdf合并 + pdf转word文件
目录 一.PDF批量合并 1.文件准备 2.代码 3.注意事项 二.PDF批量转word文件 1.文件准备 2.代码 3.运行效果 一.PDF批量合并 1.文件准备 1.将需要合并的PDF文放到一个文 ...
- 免费离线PDF工具箱,PDF工具大全,PDF合并PDF加密PDF解密PDF格式转换PDF分割PDF旋转以及从PDF中提取图片,满足对PDF操作的一切需求~完全免费无使用次数限制,文末附下载链接~
一款 完全免费 的PDF工具箱,软件一共 内置45个和PDF文件操作相关的功能,无需注册登录 即可 免费使用,所有的功能都 不限制使用次数,你对PDF操作的大多数需求它都能满足!而且 所有操作均在本地 ...
- Java使用iText PDF合并PDF(将多个PDF合并成一个PDF)
1 配置pom文件 我用的是5.4.3的版本 <dependency><groupId>com.itextpdf</groupId><artifactId&g ...
- c# .net生成pdf创建pdf,pdf签名pdf合并pdf增删页面页眉页脚批注旋转提取图片文本加水印等的类库SharpPDF
SharpPDF是一款在.net平台实现PDF生成和编辑的解决方案级产品.可以在Winform,WPF,WebAPI,WebService,MVC,WebForm等多种类型项目中,轻松实现一行代码生成 ...
- mfc中怎么集成文件_怎么把几个pdf合并并打印在一份文件中?
a为什么我们要把pdf文件合并呢?当然我们要知道什么是pdf文件才能进行更多的操作,Pdf是我们许多人都会用到的一种存储文件的格式,它的内容基本是以图像的形式表现,所以我们在播放和打印的时候可以不用担 ...
- python合并pdf文件并生成页面
1. 环境搭建 # python 版本 3.9.7 # 依赖包 reportlab==3.6.9,PyPdf2==1.27.3,pikepdf==3.0.8,pyinstaller==4.10 2.功 ...
- Java合并PDF文件的几种方法
最近需要做一个把多个pdf报告合并成一个以方便预览的需求,下面总结一下自己用的方法和遇到的一些问题, 第一种方法: 此方法引用了itextpdf.jar包: private static void m ...
- vba 当前文件名_VBA实践+批量合并pdf
VBA实践+批量合并pdf 声明:文章仅供参考,尝试,请注意备份文件. 作用:把文件夹下若干个小文档合并成一个大文档. 以下代码创建一个空白pdf文档,然后依次把文件夹下的所有小pdf文档插入到该文档 ...
- Latex提取与合并pdf文档(超实用)
参考链接:LATEX合并PDF https://blog.csdn.net/feixingfei/article/details/78557025 LaTeX 提取,合并多个pdf页 https:// ...
最新文章
- VMware中创建Ubuntu16.0.4虚拟桥连方式无法上网
- 如何让自己的开源库支持cocoapods?
- PHP一行命令打印当前系统时间
- jQuery图表插件 JS Charts
- 彩票模拟选号程序java_java课程设计-彩票购买抽奖程序
- cydia软件路径_Cydia报错解决大全
- Minimum Mean Squared Error (MMSE)最小均方误差
- 11054 - Wine trading in Gergovia
- SpringBoot系列: CommandLineRunner接口的用处
- 爬虫python是干什么的_爬虫是什么?能自学嘛
- Python文件管理模块封装,提供大家直接调用(最全最好用)
- anaconda flaks 安装_Anaconda 安装和配置
- eclipse 改包名
- JavaScript面向对象编程之双向链表结构实现立体轮播图效果
- android新手上路 一
- WinZip Pro 9 for Mac(专业zip压缩解压工具)
- 2008年9月23号,星期二,晴。博观而约取,厚积而薄发。(苏轼)
- VBS QQ微信消息轰炸
- 使用VBS编写xshell/SecureCRT自动化脚本
- mac安装golang,编写第一个go程序
热门文章
- 传感器 | 基于新型的MEMS气体微密度计的密度和浓度测量应用
- 精品基于Python的高校学生职业推荐平台兼职招聘求职
- 强大的 10款 Mac 思维导图和流程图软件推荐
- 对一阶电路的瞬态分析
- 亚马逊成人用品巨头日本Aivrobta品牌要在今年进军中国市场了
- ios居然自带悬浮窗调试工具
- android悬浮窗只只点击按钮,只有安卓才能体验的悬浮窗!果粉看了默默收起手机...
- 类C语言--栈与队列习题--假设以I和O分别表示入栈和出栈操作。栈的初态和终态均为空,入栈和出栈的操作序列可表示为仅由I和O组成的序列,称可以操作的序列为合法序列,否则称为非法序列。
- (P36-P39)右值和右值引用、右值引用的作用以及使用、未定引用类型的推导、右值引用的传递
- memset的使用方法