[.NET开发] C# 合并、拆分PDF文档
在整理文件时,将多个同类型文档合并是实现文档归类的有效方法,也便于文档管理或者文档传输。当然,也可以对一些比较大的文件进行拆分来获取自己想要的部分文档。可以任意地对文档进行合并、拆分无疑为我们了提供极大的便利。那么在C#语言环境中怎么来实现PDF文档的和被拆分呢?下面将介绍具体的代码操作方法。
所需工具:Free Spire.PDF for .NET、Visual Studio 2013
一、合并多个PDF文档using System;
using Spire.Pdf;
namespace MergePDF
{
class Program
{
static void Main(string[] args)
{
//创建一组数组实例,数组元素为需要合并的多个PDF文档的路径
String[] files = new String[] { "test1.pdf", "test2.pdf", "test3.pdf" };
//调用方法MergeFiles()合并文档
PdfDocumentBase doc = PdfDocument.MergeFiles(files);
//保存文档
doc.Save("合并.pdf", FileFormat.PDF);
}
}
}
复制代码


注意: 这里合并的PDF文档是以新的一页来合并的文档,目的不是将多个文档合并为具有一定逻辑的文档,而是出于方便文档管理以及其他操作的目的来合并。
二、拆分PDF文档 (一)按每页来拆分using System;
using Spire.Pdf;
namespace SplitPDF1
{
class Program
{
static void Main(string[] args)
{
//初始化一个PdfDocument类实例,并从文件中加载需要被拆分的PDF文档
PdfDocument doc = new PdfDocument(@"C:\Users\Administrator\Desktop\test.pdf");
//调用方法Split()方法将PDF文档按页拆分保存
String pattern = "拆分{0}.pdf";
doc.Split(pattern);
}
}
}
复制代码
拆分结果:

拆分的文档个数与原文档页数相同。
(二)按指定页数拆分using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
namespace SplitPDF2
{
class Program
{
static void Main(string[] args)
{
//创建一个PdfDocument类对象,并加载一个现有的PDF文档
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile(@"C:\Users\Administrator\Desktop\测试.pdf");
//新建1个PDF文档
PdfDocument pdf1 = new PdfDocument();
PdfPageBase page;
//将现有的PDF文档的第1-5页拆分为一个文档
for (int i = 0; i < 4; i++)
{
//向新建文档添加与现有文档页面大小一致的页面
page = pdf1.Pages.Add(pdf.Pages[i].Size, new PdfMargins(0));
//为现有文档的页面创建模板并将模板画到新建文档的页面上
pdf.Pages[i].CreateTemplate().Draw(page, new PointF(0, 0));
}
//保存文档
pdf1.SaveToFile("1-5.pdf");
//新建第2个PDF文档
PdfDocument pdf2 = new PdfDocument();
//将现有PDF文档的第5-10页拆分为另一个文档
for (int i = 4; i < 9; i++)
{
//向新建文档添加与现有文档页面大小一致的页面
page = pdf2.Pages.Add(pdf.Pages[i].Size, new PdfMargins(0));
//为现有文档的页面创建模板并将模板画到新建文档的页面上
pdf.Pages[i].CreateTemplate().Draw(page, new PointF(0, 0));
}
//保存文档
pdf2.SaveToFile("6-10.pdf");
//新建第3个PDF文档
PdfDocument pdf3 = new PdfDocument();
//将现有PDF文档的第10-15页拆分为另一个文档
for (int i = 9; i < 14; i++)
{
//向新建文档添加与现有文档页面大小一致的页面
page = pdf3.Pages.Add(pdf.Pages[i].Size, new PdfMargins(0));
//为现有文档的页面创建模板并将模板画到新建文档的页面上
pdf.Pages[i].CreateTemplate().Draw(page, new PointF(0, 0));
}
//保存文档
pdf2.SaveToFile("11-15.pdf");
}
}
}
复制代码
(编辑:雷林鹏 来源:网络)
[.NET开发] C# 合并、拆分PDF文档的更多相关文章
- Java 合并、拆分PDF文档
处理PDF文档时,我们可以通过合并的方式,来任意组几个不同的PDF文件或者通过拆分将一个文件分解成多个子文件,这样的好处是对文档的存储.管理很方便.下面将通过Java程序代码介绍具体的PDF合并.拆分 ...
- [.NET开发] C# 如何在PDF文档中创建表格
表格能够直观的传达数据信息,使信息显得条理化,便于阅读同时也利于管理.那在PDF类型的文档中如何来添加表格并且对表格进行格式化操作呢?使用常规方法直接在PDF中添加表格行不通,那我们可以在借助第三方组 ...
- [开发笔记]-C#获取pdf文档的页数
[操作pdf文档]之C#判断pdf文档的页数: /// <summary> /// 获取pdf文档的页数 /// </summary> /// <param name=& ...
- 怎样用Adobe Acrobat 7 Pro把PDF文档拆分成多个啊?
这个pdf文档里有多篇文章,我想把他们分开并分别保存在独立的pdf文档.怎么操作?我的电脑基础不太好,麻烦说得详细一些. Adobe Acrobat 7 Pro拆分PDF文档的方法: 1.点左边的“书 ...
- 常用PDF文档开发库
C++库: 1,PDF类库 PoDoFo http://podofo.sourceforge.net/ PoDoFo 是一个用来操作 PDF 文件格式的 C++ 类库.它还包含一些小工具用来解析 ...
- Apache PDFbox开发指南之PDF文档读取
转载请注明来源:http://blog.csdn.net/loongshawn/article/details/51542309 相关文章: <Apache PDFbox开发指南之PDF文本内容 ...
- C# 合并及拆分Word文档
本文简要分析一下如何如何使用C#简单实现合并和拆分word文档.平时我们在处理多个word文档时,可能会想要将两个文档合并为一个,或者是将某个文档的一部分添加到另一个文档中,有的时候也会想要将文档拆分 ...
- 【Win10 开发】读取PDF文档
关于用来读取PDF文档的内容的API,其实在Win8.1的时候就有,不过没关系,既咱们讨论的是10的UAP,连同8.1的内容也包括进去,所以老周无数次强调:把以前的内容学好了,就可以在不学习任何新知识 ...
- PDF文档转换为图片、图片转成PDF 及PDF合并
简介 功能:PDF文档按每页转换成一张图片,一张图片转换成一张PDF 并将多张PDF合成一个多页的PDF文档. 经历:在各个网站上搜索始终出现各种问题,尤其是遇到引用的版本问题尤其头疼,不是不能适用当 ...
随机推荐
- 【转】SQL Server、Oracle、MySQL和Vertica数据库常用函数对比
SQL Server.Oracle.MySQL和Vertica数据库常用函数对比 Vertica数据库是HP公司新收购的用于BI方面的数据库. 1. 绝对值 S:select abs(-1) valu ...
- 复制控件出错--提示XX控件不存在
有时候比较喜欢复制粘贴,但是结果就是,经常出现XX控件找不到,或者不存在之类的话~~ 错误如下: 在相当郁闷的时候,尝试了一种很土土的方法,就是直接新建一个同名新页面,把前台和后台的代码复制进去~~ ...
- servlet之一(概念/如何写/运行/错误提示/乱码处理)
# 1. 什么是Servlet? sun公司制订的一种用来扩展web服务器功能的组件规范. ## (1) 扩展web服务器功能(servlet的产生背景) web服务器只能处理静态资源 ...
- python构造栈结构
栈:是一种先进后出的数据结构:本片文章,我们用python的面向对象来构造这样的数据结构. 栈中的每一个数据除了存储当前的数值外,还存储着当前数值下一个数据的类型(注意不是下一个数据的数值). cla ...
- python文件操作-r、w、a、r+、w+、a+和b模式
对文件操作的基本步骤 f=open('a.txt','r',encoding='utf-8') data=f.read() print(data) f.close() 文件的打开和关闭使用open() ...
- 静态编译C/C++程序
静态编译C/C++程序,让程序运行不受平台限制 由于Linux操作系统的特有elf加载顺序. (可以参考此文). 虽然可以很大程度上解决Windows早期版本的dll hell问题, 但是给部署带来了 ...
- Fast特征点的寻找和提取
一.基础 最初由Rosten和Drummond [Rosten06]提出的FAST(加速段测试的特征)特征检测算法是基于将点P与其包围圆内的点集的直接比较的思想. 基本思想是,如果附近的几个点与P类似 ...
- 20145307陈俊达_安卓逆向分析_Xposed的hook技术研究
20145307陈俊达_安卓逆向分析_Xposed的hook技术研究 引言 其实这份我早就想写了,xposed这个东西我在安卓SDK 4.4.4的时候就在玩了,root后安装架构,起初是为了实现一些屌 ...
- Android实践项目汇报总结(上)修改
微博客户端的设计与实现(上) 第一章 绪论 1.1课题背景 微博可以说是时下最受人们所喜爱的一种社交方式,它是一种通过关注机制分享简短实时信息的广播式的社交网络平台.通过微博我们可以了解最新的时事新闻 ...
- loj 诗歌
链接 链接 思路 好久之前的考试题了吧,之前貌似抄的题解 现在理解了怕忘了,就写个题解记录一下吧,题目还是不错的 枚举中间点j \[H_{i}-H_{j}=H_{j}-H_{k}\] \[H_{k}+ ...