C# 合并及拆分PDF文件
C# 合并及拆分PDF文件
有时我们可能会遇到下图这样一种情况 — 我们需要的资料或教程被分成了几部分存放在多个PDF文件中,不管是阅读还是保存都不是很方便,这时我们肯定想要把这些PDF文件合并为一个PDF文件。相对应的,有时候我们也需要拆分一个大的PDF文件,来从中获取我们需要的那一部分资料。这篇文章主要分享如何使用C#来将多个PDF文件合并为一个PDF文件以及将一个PDF文件拆分为多个PDF文件。

合并PDF文件
合并PDF文件的代码很简单,主要分为三步,首先获取需要合并的PDF文件,然后调用public static PdfDocumentBase MergeFiles(string[] InputFiles)方法,将这些PDF文件合并,然后保存文件。
代码如下:
using System;
using Spire.Pdf;
namespace 合并PDF文件
{
class Program
{
static void Main(string[] args)
{
String[] files = new String[] { "文件1.pdf", "文件2.pdf", "文件3.pdf" };
string outputFile = "输出.pdf";
PdfDocumentBase doc = PdfDocument.MergeFiles(files);
doc.Save(outputFile, FileFormat.PDF);
System.Diagnostics.Process.Start(outputFile);
}
}
}
合并前:

合并后:

拆分PDF文件
在拆分PDF文件时,我们可以选择将文件的每一页单独拆分为一个PDF文件,还可以设定页码范围,将其拆分为多个PDF文件。下面将分两个部分来介绍。
一、将PDF文件的每一页拆分为一个单独的PDF文件
在上一个部分中,合并后的PDF文件一共有4页,这里我将它的每一页拆分为一个单独的PDF文件。
代码如下:
using System;
using Spire.Pdf; namespace 拆分PDF文件1
{
class Program
{
static void Main(string[] args)
{
PdfDocument doc = new PdfDocument("输出.pdf");
String pattern = "拆分-{0}.pdf";
doc.Split(pattern);
doc.Close();
}
}
}
效果图:

二、根据指定页面范围拆分PDF文件
这里我将一个18页的PDF文件的前10页拆分为一个PDF文件,后8页拆分为另一个PDF文件。
代码如下:
using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.Graphics; namespace 拆分PDF文件2
{
class Program
{
static void Main(string[] args)
{
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("各种点心的做法.pdf"); PdfDocument pdf1 = new PdfDocument();
PdfPageBase page;
for (int i = 0; i < 10; i++)
{
page = pdf1.Pages.Add(pdf.Pages[i].Size, new PdfMargins(0));
pdf.Pages[i].CreateTemplate().Draw(page, new PointF(0, 0));
}
pdf1.SaveToFile("DOC_1.pdf"); PdfDocument pdf2 = new PdfDocument();
for (int i = 10; i < 18; i++)
{
page = pdf2.Pages.Add(pdf.Pages[i].Size, new PdfMargins(0));
pdf.Pages[i].CreateTemplate().Draw(page, new PointF(0, 0));
}
pdf2.SaveToFile("DOC_2.pdf");
}
}
}
拆分前:

拆分后:

Note: 这里我使用了一个PDF组件Spire.PDF.
C# 合并及拆分PDF文件的更多相关文章
- C# 合并和拆分PDF文件
一.合并和拆分PDF文件的方式 PDF文件使用了工业标准的压缩算法,易于传输与储存.它还是页独立的,一个PDF文件包含一个或多个"页",可以单独处理各页,特别适合多处理器系统的工作 ...
- C# 将多个office文件转换及合并为一个PDF文件
PDF文件介绍 PDF(Portable Document Format )文件源于20世纪90年代初期,如今早已成为了一种最流行的的文件格式之一.因为PDF文件有很多优点: 支持跨平台和跨设备共享 ...
- 如何用Latex合并多个pdf文件?
如何用Latex合并多个pdf文件? 用TeX合并pdf, 用LaTeX合并pdf 代码: \documentclass[a4paper]{article} \usepackage{pdfpage ...
- Java 合并、拆分PDF文档
处理PDF文档时,我们可以通过合并的方式,来任意组几个不同的PDF文件或者通过拆分将一个文件分解成多个子文件,这样的好处是对文档的存储.管理很方便.下面将通过Java程序代码介绍具体的PDF合并.拆分 ...
- [.NET开发] C# 合并、拆分PDF文档
在整理文件时,将多个同类型文档合并是实现文档归类的有效方法,也便于文档管理或者文档传输.当然,也可以对一些比较大的文件进行拆分来获取自己想要的部分文档.可以任意地对文档进行合并.拆分无疑为我们了提供极 ...
- Aspose.Pdf合并图片到PDF文件
将图片和PDF文件合成为新的PDF文件,可以先将图片转换为PDF文件, 然后合成PDF即可, 将图片转换成PDF文件有如下方法: Aspose.Pdf.Document Aspose.Pdf.Gene ...
- 如何将多个网页合并成一个PDF文件
pdfFactory是一款PDF虚拟打印软件,但与其他虚拟打印机软件不同的是,它使用起来更加简单高效.由于无需Acrobat就能生成Adobe PDF文件,它可以帮助用户在系统没有连接打印机的情况下, ...
- 用itext合并多个pdf文件【转】【补】
java代码 package c; import java.io.FileOutputStream; import java.io.IOException; import java.util.Arra ...
- PDF 补丁丁 0.4.2.891 测试版发布:合并PDF文件时设置书签文本和样式
新的测试版在合并文件界面增加了设置书签样式的功能.除了可以为所合并的图片(或PDF文件)指定书签文本之外,还可以指定其文本样式(文本颜色.粗体.斜体).如下图所示. 此外,合并文件界面还添加了文件夹历 ...
随机推荐
- 分治法求解最近对问题(c++)
#include"stdafx.h" #include<iostream> #include<cmath> #define TRUE 1 #define F ...
- 利用XAG在RAC环境下实现GoldenGate自动Failover
概述 在RAC环境下配置OGG,要想实现RAC节点故障时,OGG能自动的failover到正常节点,要保证两点: 1. OGG的checkpoint,trail,BR文件放置在共享的集群文件系统上,R ...
- 算法与数据结构(九) 查找表的顺序查找、折半查找、插值查找以及Fibonacci查找
今天这篇博客就聊聊几种常见的查找算法,当然本篇博客只是涉及了部分查找算法,接下来的几篇博客中都将会介绍关于查找的相关内容.本篇博客主要介绍查找表的顺序查找.折半查找.插值查找以及Fibonacci查找 ...
- ASP.Net MVC——使用 ITextSharp 完美解决HTML转PDF(中文也可以)
前言: 最近在做老师交代的一个在线写实验报告的小项目中,有这么个需求:把学生提交的实验报告(HTML形式)直接转成PDF,方便下载和打印. 以前都是直接用rdlc报表实现的,可这次牵扯到图片,并且更为 ...
- Java开发中的23种设计模式详解
[放弃了原文访问者模式的Demo,自己写了一个新使用场景的Demo,加上了自己的理解] [源码地址:https://github.com/leon66666/DesignPattern] 一.设计模式 ...
- openresty 前端开发入门四之Redis篇
这章主要演示怎么通过lua连接redis,并根据用户输入的key从redis获取value,并返回给用户 操作redis主要用到了lua-resty-redis库,代码可以在github上找得到 而且 ...
- iOS之UILabel的自动换行
思路: 获取UILabel的frame大小 获取UILabel的字体大小 获取UILabel的文本内容 根据上面的3部分数据,计算文本显示区域大小 根据4计算的大小,实时改变UILabel的frame ...
- Android中使用ExpandableListView实现微信通讯录界面(完善仿微信APP)
之前的博文<Android中使用ExpandableListView实现好友分组>我简单介绍了使用ExpandableListView实现简单的好友分组功能,今天我们针对之前的所做的仿微信 ...
- MSSQL 事务,视图,索引,存储过程,触发器
事务 事务是一种机制.是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行. 在数据库系统上执行并发操作时事务是作为最小的控制单元来使用的.这特别适用于多用户同时操作的数据 ...
- linux系统内存爆满的解决办法!~
1.首先用free工具检查一下内存的使用情况: 这个是我的linux时时数据 Mem: 4046824 763620 3283204 9004 10284 61560 -/+buffers/cach ...