C# / VB.NET合并PDF指定页

在前面的文章中,我们已经知道如何合并、拆分多个PDF文件,在这篇文章中的合并、拆分PDF文档主要是以方便文档管理的目的来操作文档,在文档查阅、管理及存储上很方便实用。但是我们如果想要合并多个文档中的部分文档页的内容,该如何来做呢?可以参考接下来将要介绍的合并方法。

PS: 本篇文章是对Free Spire.PDF 的合并功能的进一步介绍,即如何合并多个PDF文档中的指定页(指定单页、指定多页)为一个新文档
使用工具:Free Spire.PDF for .NET
提示:下载安装该组件后,注意在项目程序中添加引用Spire.PDF.dll文件
代码细节可参考以下主要代码段:

//初始化数组,数组元素为需要合并的PDF文档
string[] files = { "sample1.pdf", "sample2.pdf" };
PdfDocument[] docs = new PdfDocument[files.Length];
//遍历PDF文档
for (int i = 0; i < files.Length; i++)
{
docs[i] = new PdfDocument();
docs[i].LoadFromFile(files[i]);
}
//创建一个新的PDF文档并插入从原文档选取的指定页
PdfDocument doc = new PdfDocument();
doc.InsertPage(docs[0], 0);//指定单页(文档1的第1页)
doc.InsertPageRange(docs[1], 0, 1);//指定多页 (文档2的第1页和第2页)
//保存并命名合并后的文档,同时运行文档
doc.SaveToFile("Result.pdf");
Process.Start("Result.pdf");

合并前:
C# / VB.NET合并PDF指定页
合并后:
C# / VB.NET合并PDF指定页

全部代码
C#

using Spire.Pdf;
using System.Diagnostics;namespace MergeSelectedPDFpages
{class Program{static void Main(string[] args){string[] files = { "sample1.pdf", "sample2.pdf" };PdfDocument[] docs = new PdfDocument[files.Length];for (int i = 0; i < files.Length; i++){docs[i] = new PdfDocument();docs[i].LoadFromFile(files[i]);}PdfDocument doc = new PdfDocument();doc.InsertPage(docs[0], 0); doc.InsertPageRange(docs[1], 0, 1);     doc.SaveToFile("Result.pdf");Process.Start("Result.pdf");}}
}

VB.NET

Imports Spire.Pdf
Imports System.DiagnosticsNamespace MergeSelectedPDFpagesClass ProgramPrivate Shared Sub Main(ByVal args() As String)Dim files() As String = New String() {"sample1.pdf", "sample2.pdf"}Dim docs() As PdfDocument = New PdfDocument((files.Length) - 1) {}Dim i As Integer = 0Do While (i < files.Length)docs(i) = New PdfDocumentdocs(i).LoadFromFile(files(i))i = (i + 1)LoopDim doc As PdfDocument = New PdfDocumentdoc.InsertPage(docs(0), 0)doc.InsertPageRange(docs(1), 0, 1)doc.SaveToFile("Result.pdf")Process.Start("Result.pdf")End SubEnd Class
End Namespace

以上内容是本次关于“如何合并PDF文档指定页”的全部介绍,如果喜欢,欢迎转载(转载请注明出处)
感谢阅读!

转载于:https://blog.51cto.com/eiceblue/2072424

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高级异常

一、什么是异常 解析&#xff1a;异常就是在程序的运行过程中所发生的不正常事件 二、Java异常处理是通过5个关键字来解决的&#xff1a;try、catch、finally、&#xff08;前三个是捕获异常&#xff09;throw&#xff08;手动抛出异常&#xff09;、throws&#xff08;声明异常…

【纠错】——错误:PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。“+解决方案

目录 问题出现场景 原因 解决方案 问题出现场景 先打开pdf文件&#xff0c;获取pdf文件内容后&#xff0c;利用os.remove()来删除文件&#xff0c;这时候出现错误 os.remove(source_path)PermissionError: [WinError 32] 另一个程序正在使用此文件&#xff0c;进程无法访问。…

Eclipse中自动添加注释

方法一&#xff1a;Eclipse中设置在创建新类时自动生成注释 windows-->preference   Java-->Code Style-->Code Templates     code-->new Java files 编辑它 ${filecomment} ${package_declaration} /** * Author fufu* Time ${date} ${time} * Version 1.…

使用rancher创建负载均衡服务

2019独角兽企业重金招聘Python工程师标准>>> 2台主机&#xff0c;一个server包含2个容器进程&#xff08;可以是多个&#xff09;&#xff0c;一个负载均衡容器&#xff08;貌似是依赖haproxy的&#xff09; 1&#xff0c;创建一个镜像&#xff0c;编辑Dockerfile 创…

Six Basic Functional Areas of Spring

转载于:https://www.cnblogs.com/Brake/p/5440738.html

【pyqt5学习】——登录界面跳转到主界面,登录界面关闭的情况下从主界面跳转回登录界面

目录 一、登录界面长下面这样&#xff0c;由qt designer设计 login.py 二、登录界面 逻辑代码loginLogic.py 三、主界面comsumeType.py 四、主界面逻辑代码comsumeTypeLogic.py 五、登录界面跳转至主界面 六、主界面回到登录界面 一、登录界面长下面这样&#xff0c;由qt d…

WPF ClickOnce应用程序IIS部署发布攻略

WPF程序非常适合公司内网使用&#xff0c;唯一缺点就是客户端要安装.net框架4.0。优势也很明显&#xff0c;在客户端运行的是一个WinForm程序&#xff0c;自动下载&#xff0c;可以充分利用客户机的性能&#xff0c;而且是以当前的Windows用户权限运行&#xff0c;避免了权限带…

文件传输协议

文件传输协议&#xff08;英文&#xff1a;File Transfer Protocol&#xff0c;简称为FTP&#xff09;是用于在网络上进行文件传输的一套标准协议。它属于网络传输协议的应用层。 FTP是一个8位的客户端-服务器协议&#xff0c;能操作任何类型的文件而不需要进一步处理&#xff…

【python学习】——为exe软件创建快捷方式;实现软件自启动

目录 1、为exe创建快捷方式 2、实现软件自启动 3、完整代码 4、结果展示 1、为exe创建快捷方式 利用winshell库的CreateShortCut函数进行创建 【python学习】——获取桌面路径&#xff0c;获取系统盘符&#xff0c;获取电脑用户名&#xff0c;获取软件自启动存放目录_有情怀…

vxWorks下常用的几种延时方法

在应用编程的时候&#xff0c;通常会碰到需要一个任务在特定的延时之后执行一个指定的动作&#xff0c;如等待外设以确保数据可靠&#xff0c;控制扬声器发声时间以及串口通信超时重发等。这就需要利用定时器机制来计量特定长度的时间段。 vxWorks作为实时嵌入式系统&#xff0…

【pyqt5学习】——窗口最小化至托盘、取消任务栏图标

目录 1、最小化至托盘 1&#xff09;重写系统托盘类&#xff0c;设置托盘图标等属性 2&#xff09;将具体的窗口放入托盘 2、取消任务栏界面图标 3、问题汇总 1&#xff09;退出后托盘图标还是存在&#xff0c;没有消失 2&#xff09;最小化后左下角会出现 窗口 3&#…

React 是怎样炼成的

本文主要讲述 React 的诞生过程和优化思路。 内容整理自 2014 年的 OSCON - React Architecture by vjeux&#xff0c;虽然从今天&#xff08;2018&#xff09;来看可能会有点历史感&#xff0c;但仍然值得学习了解。以史为鉴&#xff0c;从中也可以管窥 Facebook 优秀的工程管…

【pyqt5学习】——重写窗口右上角关闭事件closeEvent()

目录 1、法一&#xff1a;设置中文按钮 2、法二&#xff1a;不设置中文按钮 pyqt5 关闭按钮显示提示信息_Marvin_Xavier的博客-CSDN博客_pyqt 关闭按钮https://blog.csdn.net/marwenx/article/details/107226531 1、法一&#xff1a;设置中文按钮 def closeEvent(self, even…

【pyqt5学习】——日历控件calendarWidget设置单元格格式(前景、背景)、日历控件属性编辑

目录 0、导入库 1、返回日历选中的日期 2、更改日历控件周几&#xff08;比如一个月属于周一的日期&#xff09;的所有格子属性 3、更改日历控件单个格子&#xff08;指定日期&#xff09;属性 4、日历格子属性 5、信号——clicked() 6、成果展示 0、导入库 from PyQt5.Q…

linux内核数据结构之链表

1、前言 最近写代码需用到链表结构&#xff0c;正好公共库有关于链表的。第一眼看时&#xff0c;觉得有点新鲜&#xff0c;和我之前见到的链表结构不一样&#xff0c;只有前驱和后继指针&#xff0c;而没有数据域。后来看代码注释发现该代码来自linux内核&#xff0c;在linux源…

【bug修复】you must feed a value for placeholder tensor ‘Placeholder‘ with dtype float解决方案

最近碰到了这个you must feed a value for placeholder tensor Placeholder with dtype float and shape的问题&#xff0c;字面意思很好理解&#xff0c;就是没有给Placeholder赋值&#xff0c;可是我明明赋值了&#xff0c;百度了许多&#xff0c;也都是让我检查是否赋值以及…

动态代理3之代理工厂实现

动态代理的深化&#xff1a;承接动态代理2( 对 上级实例进行 深化)&#xff0c;也就是 spring 的前身 &#xff08;必须掌握&#xff09;实例&#xff1a; 文件说明&#xff1a;1.有一个Waiter接口&#xff0c;该接口有一个 server() 、ShouQian()方法 2.有一个 Waiter接口的实…

【bug修复】解决ValueError: Tensor(“Variable:0“ dtype=float32_ref) must be from the same graph as Tensor(“R

bug:描述 在进行tensorflow进行搭建CNN网络时&#xff0c;在定义CNN的py文件中调用cnn模型&#xff0c;运行正常&#xff0c;但是在其他py文件中进行时就出现问题 ValueError: Tensor(“Variable:0” dtypefloat32_ref) must be from the same graph as Tensor(“Reshape:0”,…

Linux 图片传输功能c/c++(初版)

由于深度学习任务的需要&#xff0c;要在程序里面嵌入一个module。 这个module 的功能是接收来自ios客户端的图片。并且传送给深度学习分类器进行处理。 于是看了看各种各样的 module 实现方案。 先是用IO函数把图片以数组的方式存起来。 再和服务器建立连接&#xff0c;socket…

Val编程-val系列编程思想

利用Val语言可以编写出各种各样的应用程序。正如windows phone面临的窘境一样&#xff0c;受众太小&#xff0c;市场不大。应用程序不多&#xff0c;所以也谈不上成熟。国内的应用程序基本上就是简单的小程序&#xff0c;谈不上什么编程思想。国外许多都是基于kernel的而衍生出…