spire.pdf支持通过page.createtemplate()和page.canvas.drawtemplate()方法来实现文档复制。下面的示例中,将演示如何复制pdf文档的方法,根据不同需求,以下方法分为了2种情况来进行复制:
- 从一个文档复制到另一个文档
- 在同一个文档内复制
用于测试的2个源文档:
从一个文档复制到另一个文档
c#
//加载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");
vb.net
'加载2个测试文档
dim doc1 as new pdfdocument()
doc1.loadfromfile("test1.pdf")
dim doc2 as new pdfdocument()
doc2.loadfromfile("test2.pdf")
'获取文档1中的第1页以及它的页面大小,并基于第1页创建一个pdf模板
dim page as pdfpagebase = doc1.pages(0)
dim size as sizef = page.size
dim template as pdftemplate = 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")
复制结果:
在同一个文档中复制
c#
//实例化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");
vb.net
'实例化pdfdocument类的对象,并加载测试文档
dim pdf as new pdfdocument("test1.pdf")
'获取文档第1页及页面大小,并创建复制模板
dim page as pdfpagebase = pdf.pages(0)
dim size as sizef = page.size
dim template as pdftemplate = page.createtemplate()
'基于第1页的页面大小,添加新1页到文档,并将模板绘制到新的页面
for i as integer = 0 to 1
page = pdf.pages.add(size, new pdfmargins(0))
page.canvas.drawtemplate(template, new pointf(0, 0))
next
'保存文档
pdf.savetofile("output.pdf")
复制结果: