我使用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时,库已经更改,我的旧代码不再适用了。
答案 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();