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

Itext 从一页文档创建多页PDF文档,itext,itext7,Itext,Itext7,我正在为.NET c#使用iText7。我正在尝试在内存中创建一个多页PDF文档(n页数),其中源PDF文档只包含一页 我可以用一个页面创建一个新文档,但无法根据需要创建其他页面。我试过了 MemoryStream ms = new MemoryStream(); Stream s1 = Assembly.GetExecutingAssembly().GetManifestResourceStream("doc.pdf"); s1.CopyTo(ms) PdfReader re

我正在为.NET c#使用iText7。我正在尝试在内存中创建一个多页PDF文档(n页数),其中源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时,它没有页面。我不知道如何在“附加”模式下打开destPdfDoc。如果这有道理的话。总之,我迷路了

我使用iTextSharp完成了这项工作,但是当使用新的iText7时,库发生了变化,我的旧代码不再工作

我明白了

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();

在进一步处理这个问题之后,我意识到表单字段没有转移。结构不正确,这基本上使它无用。回到原点。