在整理文件时,将多个同类型文档合并是实现文档归类的有效方法,也便于文档管理或者文档传输。当然,也可以对一些比较大的文件进行拆分来获取自己想要的部分文档。可以任意地对文档进行合并、拆分无疑为我们了提供极大的便利。那么在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文档的更多相关文章

  1. Java 合并、拆分PDF文档

    处理PDF文档时,我们可以通过合并的方式,来任意组几个不同的PDF文件或者通过拆分将一个文件分解成多个子文件,这样的好处是对文档的存储.管理很方便.下面将通过Java程序代码介绍具体的PDF合并.拆分 ...

  2. [.NET开发] C# 如何在PDF文档中创建表格

    表格能够直观的传达数据信息,使信息显得条理化,便于阅读同时也利于管理.那在PDF类型的文档中如何来添加表格并且对表格进行格式化操作呢?使用常规方法直接在PDF中添加表格行不通,那我们可以在借助第三方组 ...

  3. [开发笔记]-C#获取pdf文档的页数

    [操作pdf文档]之C#判断pdf文档的页数: /// <summary> /// 获取pdf文档的页数 /// </summary> /// <param name=& ...

  4. 怎样用Adobe Acrobat 7 Pro把PDF文档拆分成多个啊?

    这个pdf文档里有多篇文章,我想把他们分开并分别保存在独立的pdf文档.怎么操作?我的电脑基础不太好,麻烦说得详细一些. Adobe Acrobat 7 Pro拆分PDF文档的方法: 1.点左边的“书 ...

  5. 常用PDF文档开发库

    C++库: 1,PDF类库 PoDoFo   http://podofo.sourceforge.net/  PoDoFo 是一个用来操作 PDF 文件格式的 C++ 类库.它还包含一些小工具用来解析 ...

  6. Apache PDFbox开发指南之PDF文档读取

    转载请注明来源:http://blog.csdn.net/loongshawn/article/details/51542309 相关文章: <Apache PDFbox开发指南之PDF文本内容 ...

  7. C# 合并及拆分Word文档

    本文简要分析一下如何如何使用C#简单实现合并和拆分word文档.平时我们在处理多个word文档时,可能会想要将两个文档合并为一个,或者是将某个文档的一部分添加到另一个文档中,有的时候也会想要将文档拆分 ...

  8. 【Win10 开发】读取PDF文档

    关于用来读取PDF文档的内容的API,其实在Win8.1的时候就有,不过没关系,既咱们讨论的是10的UAP,连同8.1的内容也包括进去,所以老周无数次强调:把以前的内容学好了,就可以在不学习任何新知识 ...

  9. PDF文档转换为图片、图片转成PDF 及PDF合并

    简介 功能:PDF文档按每页转换成一张图片,一张图片转换成一张PDF 并将多张PDF合成一个多页的PDF文档. 经历:在各个网站上搜索始终出现各种问题,尤其是遇到引用的版本问题尤其头疼,不是不能适用当 ...

随机推荐

  1. nginx之gzlib压缩,expires缓存

    gzip压缩网页内容的压缩编码与传输速度优化我们观察news.163.com的头信息请求:Accept-Encoding:gzip,deflate,sdch响应:Content-Encoding:gz ...

  2. CQRS/ES框架调研

    1.Enode一个C#写的CQRS/ES框架,由汤雪华设计及实现,github上有相关源码,其个人博客上有详细的孵化.设计思路.版本迭代及最新的完善: 2.axon framwork,java编写,网 ...

  3. mysql存储引擎管理使用

    mysql采用插件化架构,可以支持不同的存储引擎,比如myisam,innodb.本文简单的介绍mysql存储引擎的管理与使用. 1.查看mysql存储引擎:show engines; 可以看到,my ...

  4. Filter过滤器与Session会话跟踪技术

    Filter过滤器 适用场景 1.为web应用程序的新功能建立模型(可被添加到web应用程序中或者从web应用程序中删除而不需要重写基层应用程序代码)2.用户授权Filter:负责检查用户请求,根据请 ...

  5. Java EE业务处理流程与XML的引入

    Java EE基于MVC架构的业务处理流程 MVC架构业务处理流程 XML定义 XML是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言.XML被设计用于数据的存 ...

  6. 微信分享缩略图,如何增加微信朋友圈分享链接的小图片? facebook、google+、twitter等分享的标签

    微信分享缩略图 如何增加微信朋友圈分享链接的小图片?在网页的头部<head>标签内加上以下代码,图片路径自行修改.<head><div id='wx_pic' style ...

  7. 2018 Java线程热门面试题,你知道多少?

    面试,难还是不难?取决于面试者的底蕴(气场+技能).心态和认知及沟通技巧.面试其实可以理解为一场聊天和谈判,在这过程中有心理.思想上的碰撞和博弈.其实你只需要搞清楚一个逻辑:“面试官为什么会这样问?他 ...

  8. SNMP学习笔记之SNMPv3的配置和认证以及TroubleShooting

    0x00 增加snmp v3用户 增加用户的时候,必须要停止SNMP服务. # service snmpd stop # net-snmp-config --create-snmpv3-user -r ...

  9. Lombok让pojo变得更优雅

    Lombok 采取注解的形式,标记在pojo上面,在编译后,自动生成相应的方法,像get.set.构造方法等都可以注解一键生成. 引入jar包: <dependency> <grou ...

  10. 20165211 2017-2018-2 《Java程序设计》第6周学习总结

    20165211 2017-2018-2 <Java程序设计>第6周学习总结 教材学习内容总结 本周,我学习了书本上第八.十五两章的内容,以下是我整理的主要知识. 第八章 常用实用类 St ...