使用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

  • startpageendpage 要添加的页数范围,这个范围是指所有ports放在一起的页数范围
    例如:ports有三个文件,分别有3页,4页,5页,指定startpage=1endpage=4
    则会添加第一个文件的所有页面和第二个文件的第一页

  • output 输出文件,同input,可以是StringStream类型,在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文件相关推荐

  1. 【python批量处理pdf】pdf合并 + pdf转word文件

    目录 一.PDF批量合并 1.文件准备 2.代码 3.注意事项 二.PDF批量转word文件 1.文件准备 2.代码 3.运行效果 一.PDF批量合并 1.文件准备 1.将需要合并的PDF文放到一个文 ...

  2. 免费离线PDF工具箱,PDF工具大全,PDF合并PDF加密PDF解密PDF格式转换PDF分割PDF旋转以及从PDF中提取图片,满足对PDF操作的一切需求~完全免费无使用次数限制,文末附下载链接~

    一款 完全免费 的PDF工具箱,软件一共 内置45个和PDF文件操作相关的功能,无需注册登录 即可 免费使用,所有的功能都 不限制使用次数,你对PDF操作的大多数需求它都能满足!而且 所有操作均在本地 ...

  3. Java使用iText PDF合并PDF(将多个PDF合并成一个PDF)

    1 配置pom文件 我用的是5.4.3的版本 <dependency><groupId>com.itextpdf</groupId><artifactId&g ...

  4. c# .net生成pdf创建pdf,pdf签名pdf合并pdf增删页面页眉页脚批注旋转提取图片文本加水印等的类库SharpPDF

    SharpPDF是一款在.net平台实现PDF生成和编辑的解决方案级产品.可以在Winform,WPF,WebAPI,WebService,MVC,WebForm等多种类型项目中,轻松实现一行代码生成 ...

  5. mfc中怎么集成文件_怎么把几个pdf合并并打印在一份文件中?

    a为什么我们要把pdf文件合并呢?当然我们要知道什么是pdf文件才能进行更多的操作,Pdf是我们许多人都会用到的一种存储文件的格式,它的内容基本是以图像的形式表现,所以我们在播放和打印的时候可以不用担 ...

  6. python合并pdf文件并生成页面

    1. 环境搭建 # python 版本 3.9.7 # 依赖包 reportlab==3.6.9,PyPdf2==1.27.3,pikepdf==3.0.8,pyinstaller==4.10 2.功 ...

  7. Java合并PDF文件的几种方法

    最近需要做一个把多个pdf报告合并成一个以方便预览的需求,下面总结一下自己用的方法和遇到的一些问题, 第一种方法: 此方法引用了itextpdf.jar包: private static void m ...

  8. vba 当前文件名_VBA实践+批量合并pdf

    VBA实践+批量合并pdf 声明:文章仅供参考,尝试,请注意备份文件. 作用:把文件夹下若干个小文档合并成一个大文档. 以下代码创建一个空白pdf文档,然后依次把文件夹下的所有小pdf文档插入到该文档 ...

  9. Latex提取与合并pdf文档(超实用)

    参考链接:LATEX合并PDF https://blog.csdn.net/feixingfei/article/details/78557025 LaTeX 提取,合并多个pdf页 https:// ...

最新文章

  1. VMware中创建Ubuntu16.0.4虚拟桥连方式无法上网
  2. 如何让自己的开源库支持cocoapods?
  3. PHP一行命令打印当前系统时间
  4. jQuery图表插件 JS Charts
  5. 彩票模拟选号程序java_java课程设计-彩票购买抽奖程序
  6. cydia软件路径_Cydia报错解决大全
  7. Minimum Mean Squared Error (MMSE)最小均方误差
  8. 11054 - Wine trading in Gergovia
  9. SpringBoot系列: CommandLineRunner接口的用处
  10. 爬虫python是干什么的_爬虫是什么?能自学嘛
  11. Python文件管理模块封装,提供大家直接调用(最全最好用)
  12. anaconda flaks 安装_Anaconda 安装和配置
  13. eclipse 改包名
  14. JavaScript面向对象编程之双向链表结构实现立体轮播图效果
  15. android新手上路 一
  16. WinZip Pro 9 for Mac(专业zip压缩解压工具)
  17. 2008年9月23号,星期二,晴。博观而约取,厚积而薄发。(苏轼)
  18. VBS QQ微信消息轰炸
  19. 使用VBS编写xshell/SecureCRT自动化脚本
  20. mac安装golang,编写第一个go程序

热门文章

  1. 传感器 | 基于新型的MEMS气体微密度计的密度和浓度测量应用
  2. 精品基于Python的高校学生职业推荐平台兼职招聘求职
  3. 强大的 10款 Mac 思维导图和流程图软件推荐
  4. 对一阶电路的瞬态分析
  5. 亚马逊成人用品巨头日本Aivrobta品牌要在今年进军中国市场了
  6. ios居然自带悬浮窗调试工具
  7. android悬浮窗只只点击按钮,只有安卓才能体验的悬浮窗!果粉看了默默收起手机...
  8. 类C语言--栈与队列习题--假设以I和O分别表示入栈和出栈操作。栈的初态和终态均为空,入栈和出栈的操作序列可表示为仅由I和O组成的序列,称可以操作的序列为合法序列,否则称为非法序列。
  9. (P36-P39)右值和右值引用、右值引用的作用以及使用、未定引用类型的推导、右值引用的传递
  10. memset的使用方法