C#实现合并及拆分PDF文件的方法
作者:E-iceblue 时间:2021-06-15 12:55:23
有时我们可能会遇到下图这样一种情况 — 我们需要的资料或教程被分成了几部分存放在多个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.
来源:http://www.cnblogs.com/Yesi/p/5604166.html
标签:C#,合并,拆分,PDF
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
C#实现封面图片生成器的示例代码
2023-05-15 11:05:58
![](https://img.aspxhome.com/file/2023/0/96430_0s.png)
Java及数据库对日期进行格式化方式
2023-08-23 12:27:52
![](https://img.aspxhome.com/file/2023/2/58462_0s.jpg)
java如何使用自己的maven本地仓库详解
2022-08-01 12:13:44
C#中ListView控件实现窗体代码
2023-02-04 02:55:06
java实现解析二进制文件的方法(字符串、图片)
2023-04-18 19:07:51
springboot 使用自定义的aspect的示例代码
2023-08-06 08:55:14
![](https://img.aspxhome.com/file/2023/7/57947_0s.png)
自定义mybatis插件如何实现sql日志打印
2023-11-29 11:22:37
![](https://img.aspxhome.com/file/2023/0/60670_0s.png)
java中List分页的几种方法介绍
2022-03-01 12:04:28
使用OkHttp包在Android中进行HTTP头处理的教程
2023-06-16 23:55:37
深入聊一聊JDK中的Map和Set
2023-10-21 15:54:20
![](https://img.aspxhome.com/file/2023/4/72294_0s.jpg)
详解ASP.NET中Identity的身份验证代码
2022-05-20 04:43:48
![](https://img.aspxhome.com/file/2023/5/108815_0s.png)
Spring boot 连接多数据源过程详解
2023-11-28 12:09:51
详解Android中的ActivityThread和APP启动过程
2021-08-20 22:51:25
![](https://img.aspxhome.com/file/2023/7/116047_0s.jpg)
java8从list集合中取出某一属性的值的集合案例
2023-04-30 01:51:49
![](https://img.aspxhome.com/file/2023/9/92659_0s.jpg)
Kotlin object的几种用法示例详解
2022-07-02 18:03:53
![](https://img.aspxhome.com/file/2023/0/109200_0s.png)
关于mybatis if else if 条件判断SQL片段表达式取值和拼接问题
2023-02-04 18:51:21
![](https://img.aspxhome.com/file/2023/3/100063_0s.jpg)
spring boot项目打包成war在tomcat运行的全步骤
2023-12-17 19:20:36
C# using语法糖图文详解
2023-08-05 02:57:36
![](https://img.aspxhome.com/file/2023/0/75590_0s.jpg)
spring mvc 实现获取后端传递的值操作示例
2023-08-10 12:55:52
详解SpringBoot中Session超时原理说明
2022-01-24 06:40:49