从一页文档创建多页PDF文档

时间:2017-05-04 16:01:31

标签: itext itext7

我使用iText7 for .NET c#。我试图在内存中创建一个多页PDF文档( n-number of page s),其中源pdf文档只包含一个页面。

我可以使用一个页面创建一个新文档,但无法根据需要创建其他页面。我试过了

MemoryStream ms = new MemoryStream();    
Stream s1 = Assembly.GetExecutingAssembly().GetManifestResourceStream("doc.pdf");    
s1.CopyTo(ms)

PdfReader readerSrc = new PdfReader(ms);
PdfDocument srcPdfDoc = new PdfDocument(readerSrc);
MemoryStream msDest = new ByteArrayOutputStream();
PdfDocument destPdfDoc - new PdfDocument(new PdfWriter(msDest));

srcPdfDoc.CopyPageTo(1,1,destPdfDoc)
destPdfDoc.AddNewPage(1, new PageSize.A4)
srcPdfDoc.CopyPageTo(1,2,destPdfDoc)

但是后来我得到了一个ArgumentOutOfRange异常...索引超出范围......等等....

我已经尝试关闭destPdfDoc,然后重新打开它,以为第二页没有被写入,直到我关闭它。但是当第二次打开destPdfDoc时,它没有页面。我无法弄清楚如何在" Append"中打开destPdfDoc。模式。如果这是有道理的。最重要的是,我输了。

我已经使用iTextSharp完成了这项工作,但是当使用新的iText7时,库已经更改,我的旧代码不再适用了。

1 个答案:

答案 0 :(得分:0)

我明白了。

MemoryStream ms = new MemoryStream();    
Stream s1 = Assembly.GetExecutingAssembly().GetManifestResourceStream("doc.pdf");    
s1.CopyTo(ms)

PdfReader readerSrc = new PdfReader(ms);
PdfDocument srcPdfDoc = new PdfDocument(readerSrc);
MemoryStream msDest = new ByteArrayOutputStream();
PdfDocument destPdfDoc - new PdfDocument(new PdfWriter(msDest));


PdfMerger merger = new PdfMeger(destPdfDoc);
merger.Merge(srcPdfDoc , 1,1)
merger.Merge(srcPdfDoc , 1,1)

destPdfDoc.Close();
srcPdfDoc.Close();