C# 复制PDF页面到另一个PDF文档

C# 复制PDF页面到另一个PDF文档

有时候我们可能有这样一个需求,那就是把PDF页面从一个PDF文档复制到另一个PDF文档中。由于PDF文档并不像word文档那样好编辑,因此复制也相对没有那么容易。写这篇文章主要是分享一个简单而且比较容易实现的方法 - 使用C#将一个PDF文档的页面,包括文字、图片和背景等复制到另一个PDF文档的指定位置。

下面是我准备的两个PDF文件:

目标:将左边的PDF文档的第一页复制到右边的PDF文档的第二页的位置。

代码实现:

步骤1:初始化一个PdfDocument类的对象doc1并加载第一个PDF文档。

PdfDocument doc1 = new PdfDocument();
doc1.LoadFromFile("童话故事.pdf");

步骤2:初始化一个PdfDocument类的对象doc2并加载第二个PDF文档。

PdfDocument doc2 = new PdfDocument();
doc2.LoadFromFile("各种点心的做法.pdf");

步骤3:获取第一个PDF文档的第一页以及它的页面大小,并基于第一页创建一个PDF模板。

PdfPageBase page =doc1.Pages[0];
SizeF size = page.Size;
PdfTemplate template =page.CreateTemplate();

步骤4:复制第一个PDF文档的第一页到第二个PDF文档中。

调用Insert(intindex, SizeF size, PdfMargins margins)方法,在第二个PDF文档中,插入一个和第一页大小一致的新页面到该文档的指定位置(这里是第二页),然后将步骤3中创建的模板应用到该页面。

doc2.Pages.Insert(1, size, newPdfMargins(0, 0));
doc2.Pages[1].Canvas.DrawTemplate(template, new PointF(0, 0));

如果要将第一页复制到第二个文档的最后一页,请用以下代码来添加一个新页面到第二个文档的末尾,然后再将模板应用到该页面。

doc2.Pages.Add(size, new PdfMargins(0, 0));

步骤5:保存文件并重新打开。

doc2.SaveToFile("复制.pdf");
System.Diagnostics.Process.Start("复制.pdf");

复制后的效果:

全部代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;

namespace 复制PDF页面到另一个PDF文档
{
    class Program
    {
        static void Main(string[] args)
        {
            PdfDocument doc1 = newPdfDocument();
           doc1.LoadFromFile("童话故事.pdf");

            PdfDocument doc2 = newPdfDocument();
           doc2.LoadFromFile("各种点心的做法.pdf");

            PdfPageBase page = doc1.Pages[0];
            SizeF size = page.Size;
            PdfTemplate template = page.CreateTemplate();

           doc2.Pages.Insert(1, size, new PdfMargins(0, 0));
           doc2.Pages[1].Canvas.DrawTemplate(template, newPointF(0, 0));

           doc2.SaveToFile("复制.pdf");
           System.Diagnostics.Process.Start("复制.pdf");
        }
    }
}

Note:在这里我借助的是第三方软件Spire.PDF,如果你的PDF文档不超过10页,可以去CodePlex上下载使用它的免费版本

感谢您的阅读!

时间: 2024-08-25 07:34:38

C# 复制PDF页面到另一个PDF文档的相关文章

分享如何将多个pdf文件合并成一个pdf?

生活就是零零散散组成的,我们的世界都是零散的,都是由零散的组成一个整体,工作中我们也会遇到很多PDF文件,不过大多都是零散的,接下来就来分享如何将多个PDF文件合并成一个PDF文件. 1在百度中去搜索关键词迅捷pdf在线转换器,然后进入首页操作 2进入后,在7个栏目中找到"文档处理"下的"PDF合并"栏目 3接着"点击选择文件"添加PDF文件,注意一定要是PDF文件格式的 4添加好之后,点击"开始合并"合并时间要长一点,因为文

如何将PDF转为可编辑的Word文档

在使用PDF文档内容的时候,通常都会将pdf先转换成word格式,因为word文档的内容易用编辑,使用起来也方便.所以很多人会将pdf文档转为word格式,虽然方法有很多,但是通过不同途径转换出来的结果也是会有不同,与原pdf文件或多或少有些出入.那如何最大限度的将pdf完整转换为word文档呢? 如果要将PDF文件转换成为可以编辑的word文档,首先PDF文件得是可以编辑的文件,扫描的pdf文件转换后的word文档内容是图片格式.除此之外,加密的pdf文件需解除密码后才可以转换转换为普通的wo

添加PDF虚拟打印机教程之任意文档转换成PDF方法

将Word转换成PDF有很多方法,例如之前我们也谈过如何使用Office 2010来实现转换.添加PDF虚拟打印机利用"虚拟打印"的方式,也可以将文档转换成为PDF文件,而且在实际操作上,几乎可以将一切能够打印的文档,都打印输出成为PDF文件格式. 我们以下选择一份简单的Word简历作为演示,使用PDF虚拟打印机来将之转换成为PDF文件.使用任何其他文档来操作,都是同样的操作过程,没有任何差别.以下是一份刚刚编辑好的Word简历: 添加PDF虚拟打印机 首先请先选择一款PDF虚拟打印机

C# 复制一个Word文档的部分或全部内容到另一个Word文档

C# 复制一个Word文档的部分或全部内容到另一个Word文档 我最近喜欢折腾Office软件相关的东西,想把很多Office软件提供的功能用.NET来实现,如果后期能把它用来开发一点我自己的小应用程序那就更好了. 扯远了,回到正题.复制文档内容这个功能太常见啦,在微软Word中实现这个功能很简单,只需要复制和粘贴就行了.这篇文章的主要目的是记录如何用C#来实现复制一个Word文档的部分或全部内容到另一个word文档,废话不多说,下面开始. 第一部分:复制部分内容: 在我的这个示例中,复制部分内

Photoshop脚本 > 使用脚本创建一个新文档

源自:http://coolketang.com/tutorials/menu2lesson1.php 本节将演示如何使用脚本,创建一个空白文档.首先创建一个空白的脚本文档,并保存在硬盘上某个位置. 接着输入脚本代码: //定义一个变量[Width],表示新文档的宽度. var width = 560; //定义一个变量[height],表示新文档的高度. var height = 560; //定义一个变量[resolution],表示新文档的分辨率. var resolution = 72;

如何把Excel中的每一行都存储为一个TXT文档

当Excel中有多行数据时,恰巧我们也需要把每一行数据都存储成一个txt文档,那么我们要手工一个一个Ctrl+c-->Ctrl+v-->Ctrl+s吗?答案是肯定不行的哇,因为本人需要处理一个存储了6万多条数据的文档,为了珍爱生命,那么本人就利用office里的VBA来投机取巧了! 首先利用快捷键Alt+F11,打开Excel的VBA,输入如下代码: Private Sub CommandButton1_Click()     Application.ScreenUpdating = Fals

HTML学习【第一个HTML文档】

HTML的概念 1.HTML是用来描述网页的一种语言. 2.HTML是一种超文本标记语言(Hyper Text Markup Language). 3.HTML不是一种编程语言,而是一种标记语言(Markup Language). 4.HTML标记语言是一套标记标签(Markup Tag). 5.HTML用标记标签来描述网页. HTML标签 1.HTML标记标签通常被称为HTML标签. 2.HTML标签是由尖括号包围的关键字.例如:<html> 3.HTML标签通常是成对出现的,但在HTML5

Aspose.Words:如何添加另一个WORD文档中的Node对象

原文:Aspose.Words:如何添加另一个WORD文档中的Node对象 首先看一段代码,这段代码意图从docSource中获取第一个表格,并插入docTarget的末尾: 1 var table = (Table)docSource.GetChild(NodeType.Table, 0, true); 2 docTarget.FirstSection.Body.ChildNodes.Add(table); 这段代码会抛出异常:“The newChild was created from a

Jsoup入门-解析和遍历一个html文档

解析和遍历一个HTML文档 如何解析一个HTML文档: String html = "<html><head><title>First parse</title></head>" + "<body><p>Parsed HTML into a doc.</p></body></html>"; Document doc = Jsoup.parse(ht