【教程】Spire.PDF教程:C# 复制 PDF 文档_chongji1953的博客-程序员秘密

技术标签: java  

Spire.PDF是一个专业的PDF组件,能够独立地创建、编写、编辑、操作和阅读PDF文件,支持 .NET、Java、WPF和Silverlight。

Spire.PDF支持通过Page.CreateTemplate()和Page.Canvas.DrawTemplate()方法来实现文档复制。下面的示例中,将演示如何复制PDF文档的方法,根据不同需求,以下方法分为了2种情况来进行复制:

  • 从一个文档复制到另一个文档
  • 在同一个文档内复制

用于测试的2个源文档:

copy-PDF-document-1

从一个文档复制到另一个文档

//加载2个测试文档
PdfDocument doc1 = new PdfDocument();
doc1.LoadFromFile("test1.pdf");
PdfDocument doc2 = new PdfDocument();
doc2.LoadFromFile("test2.pdf");

//获取文档1中的第1页以及它的页面大小,并基于第1页创建一个PDF模板
PdfPageBase page = doc1.Pages[0];
SizeF size = page.Size;
PdfTemplate template = page.CreateTemplate();

//复制第一个PDF文档的第一页到第二个PDF文档中
/*这里调用Insert(int index, SizeF size, PdfMargins margins)方法,
在文档2中,插入一个和第一页大小一致的新页面到该文档的指定位置(这里作为第1页),
并将创建的PDF模板应用到该页面*/
doc2.Pages.Insert(0, size, new PdfMargins(0, 0));
doc2.Pages[0].Canvas.DrawTemplate(template, new PointF(0, 0));

//保存文档2
doc2.SaveToFile("result.pdf");

复制结果:

copy-PDF-document-2


在同一个文档中复制

//实例化PdfDocument类的对象,并加载测试文档
PdfDocument pdf = new PdfDocument("test1.pdf");

//获取文档第1页及页面大小,并创建复制模板
PdfPageBase page = pdf.Pages[0];
SizeF size = page.Size;
PdfTemplate template = page.CreateTemplate();

//基于第1页的页面大小,添加新1页到文档,并将模板绘制到新的页面
for (int i = 0; i < 2; i++)
{
    page = pdf.Pages.Add(size, new PdfMargins(0));
    page.Canvas.DrawTemplate(template, new PointF(0, 0));
}

//保存文档
pdf.SaveToFile("output.pdf");

复制结果:

copy-PDF-document-3

 

转载于:https://my.oschina.net/u/4031066/blog/3005418

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/chongji1953/article/details/100735418

智能推荐

C语言--指针之空指针(void *)_void*指针_Silent Knight的博客-程序员秘密

文章目录前言一、void *指针是什么?void*指针简单使用二、指针内存大小指针所占大小void *类型指针与其他类型指针区别基本区别取值操作与地址增长操作三、void *指针作为函数传参实现memset实现memset总结前言这篇将介绍C语言令人头疼的知识点–指针。介绍void *这个特别的指针,介绍指针内存分配、指针作为函数传参改怎么使用以及为什么不能直接对void *指针做一些操作。一、void *指针是什么?C语言中,一共有几种指针类型,其中最特别的就是void *指针。void *指

【机器学习】EM算法_em算法连续函数_Day-yong的博客-程序员秘密

前言EMEMEM算法是一种迭代算法,用于含有隐变量的概率模型参数的极大似然估计,或极大后验概率估计。EMEMEM算法的每次迭代由两步组成:EEE步:求期望MMM步:求极大EMEMEM算法引入首先介绍一个使用EMEMEM算法的例子:三硬币模型 假设有3枚硬币,分别记作A,B,CA,B,CA,B,C,这些硬币正面出现的概率分别是π,p,qπ,p,q\pi,p,q,进行...

计算机技术其他学科,中职院校计算机学科与其它学科课程整合初探_明天见日月的博客-程序员秘密

【摘 要】随着我国社会经济的高速发展,计算机技术逐渐被普及到社会各个领域当中,在这个形势的推动下,社会各界需要计算机相关的人才也越来越多,并且要求也会越来越高。中职院校计算机学科要以培养适合现代化复合型人才为目标而对当前教学手段进行改善,本文基于计算机学科与其他学科课程的整合进行分析,进而培养学生的综合能力,提升综合素质。【关键词】计算机学科;其他学科;整合;实践【中图分类号】G710【文献标识码...

速来膜拜!20位活跃在Github上的国内技术大牛_muzitest的博客-程序员秘密

http://code.csdn.net/news/2821086/2http://www.trinea.cn/android/touch-event-delivery-mechanism/http://stormzhang.github.io/android/2014/07/07/learn-android-from-rookie/http://www.trinea.cn/

OpenMax系统的结构(2)_weixin_30788239的博客-程序员秘密

《Android系统级深入开发--移植与调试》第18章OpenMax多媒体引擎,本章开始介绍编结码较下层的标准模块OpenMax插件。本节为大家介绍OpenMax系统的结构。AD:18.1.1 OpenMax系统的结构(2)图18-3中的虚线中的内容是OpenMax IL层的内容,其主要实现了OpenMax IL中的各个组件(Compo...

随便推点

android调用Webservice方法_android 调用webservice_光头老农的博客-程序员秘密

 1.写作背景:  笔者想实现android调用webservice,可是网上全是不管对与错乱转载的文章,结果不但不能解决问题,只会让人心烦,所以笔者决定将自己整理好的能用的android调用webservice的实现分享给大家,供以后遇到相同需求的人能少走弯路。  源码使用android studio编写,可以在github上面下载观看:https://github.com/jhsc...

成都计算机网络学校,成都有哪些大专学校有计算机网络技术专业_啊准语录的博客-程序员秘密

成都有哪些大专学校有计算机网络技术专业成都有哪些大专学校有计算机网络技术专业??随着学校的不断增多,很多的信息类院校里都有开设计算机网络技术专业,对于学生来说,重要的是选择能够增长知识的学校。所以大家最好选择IT产业发达的大城市所属的学校,这样毕业后的就业也变得更加容易。那么,小编给大家推荐一个代表性的的学校。成都信息技术学校简单介绍学校以培养有丰富文化知识、有过硬专业技术、有创新精神、懂管理、善...

数据库表历史数据备份(定时任务)_weixin_41368339的博客-程序员秘密

■一、数据库表数据备份此处的数据库表数据备份指的并不是整个数据库的数据备份,而是针对某些数据量比较大的业务表的历史数据备份。数据库中基础表、用户表、字典表等等表的数据量都是非常小的,只有个别业务表因业务操作频繁数据量巨大。假如我们的业务表并不需要保存过长时间的业务数据时,可以将一定期限前的数据保存到历史表中。这样业务表中数据量就能够保持到一个合理水平,从而提高该业务表的查询效率。备份数据逻...

H3C--多区域OSPF配置实践_h3c ospf配置实例_xiukc的博客-程序员秘密

实验目的:1.掌握动态路由协议的工作原理;2.掌握rip路由协议的不足之处;3.掌握ospf的应用场景、ospf的基本原理以及ospf的基本配置。实验任务与要求网络拓扑图:1.按照图示配置各个网段的 IP 地址。2.按照图示配置多区域配置OSPF,实现全网互通。3.为了路由结构稳定,要求路由器使用环回口作为 Router-id,ABR 的环回口宣告进骨干区域。原理:邻居建立:宣告OSPF的路由器是通过所有启动了OSPF的接口发出HELLO包的,如果.

MySQL技术内幕InnoDB存储引擎笔记_weixin_33943347的博客-程序员秘密

2019独角兽企业重金招聘Python工程师标准&gt;&gt;&gt; ...

android canvas光晕绘制_Android Canvas绘图详解_周小囧的博客-程序员秘密

Android中使用图形处理引擎,2D部分是android SDK内部自己提供,3D部分是用Open GL ES 1.0大部分2D使用的api都在android.graphics和android.graphics.drawable包中。他们提供了图形处理相关 的: Canvas、ColorFilter、Point(点)和RetcF(矩形)等,还有一些动画相关的:AnimationDrawable、...