如何合并pdf文档并在两者之间添加页面

如何合并pdf文档并在两者之间添加页面,pdf,merge,itext,pdfpage,Pdf,Merge,Itext,Pdfpage,我有一个要求,我必须合并多个PDF文档,并添加一些文本页面。 例如,我从一个PDF中复制了页面,现在我必须添加一个包含一些文本的页面,然后我需要从第二个PDF中复制页面,然后再次添加一个包含一些文本的页面 我尝试过合并PDF,但它只是合并PDF,我想在每个PDF文档后添加一些文本 我想用iTextSharp。下面是代码片段: //步骤1:创建文档对象 文档=新文档() //步骤2:创建一个侦听文档的编写器 PdfCopy writer=newpdfcopy(文档,新文件流(outFile,Fil

我有一个要求,我必须合并多个PDF文档,并添加一些文本页面。 例如,我从一个PDF中复制了页面,现在我必须添加一个包含一些文本的页面,然后我需要从第二个PDF中复制页面,然后再次添加一个包含一些文本的页面

我尝试过合并PDF,但它只是合并PDF,我想在每个PDF文档后添加一些文本

我想用iTextSharp。下面是代码片段:

//步骤1:创建文档对象 文档=新文档()

//步骤2:创建一个侦听文档的编写器
PdfCopy writer=newpdfcopy(文档,新文件流(outFile,FileMode.Create));
if(writer==null)
{
返回;
}
//步骤3:我们打开文档
document.Open();
foreach(文件名中的字符串文件名)
{
//我们为某个文档创建一个阅读器
PdfReader reader=新的PdfReader(文件名);
reader.consolidateNameDestinations();
//步骤4:我们添加内容

对于(int i=1;i您不能将
document.newPage()
PdfCopy
结合使用。如果您想插入包含动态创建内容的额外页面,您需要在内存中创建新文档:

例如,您可以创建以下方法:

private byte[] CreatePdf(String comments)
{
    Document doc = new Document(PageSize.LETTER);
    using (MemoryStream output = new MemoryStream())
    {
        PdfWriter wri = PdfWriter.GetInstance(doc, output);
        doc.Open();
        Paragraph header = new Paragraph("Comments");
        doc.Add(header);
        Paragraph paragraph = new Paragraph(comments);
        doc.Add(paragraph);
        doc.Close();
        return output.ToArray();
    }
}
在代码中,您可以使用如下方法:

writer.AddDocument(new PdfReader(CreatePdf("Test comment")););
请注意,您不需要在页面上循环。您有:

for (int i = 1; i <= reader.NumberOfPages; i++)
{
     PdfImportedPage page = writer.GetImportedPage(reader, i);
     writer.AddPage(page);
}

不能将
document.newPage()
PdfCopy
结合使用。如果要插入包含动态创建内容的额外页面,需要在内存中创建新文档:

例如,您可以创建以下方法:

private byte[] CreatePdf(String comments)
{
    Document doc = new Document(PageSize.LETTER);
    using (MemoryStream output = new MemoryStream())
    {
        PdfWriter wri = PdfWriter.GetInstance(doc, output);
        doc.Open();
        Paragraph header = new Paragraph("Comments");
        doc.Add(header);
        Paragraph paragraph = new Paragraph(comments);
        doc.Add(paragraph);
        doc.Close();
        return output.ToArray();
    }
}
在代码中,您可以使用如下方法:

writer.AddDocument(new PdfReader(CreatePdf("Test comment")););
请注意,您不需要在页面上循环。您有:

for (int i = 1; i <= reader.NumberOfPages; i++)
{
     PdfImportedPage page = writer.GetImportedPage(reader, i);
     writer.AddPage(page);
}

我不知道为什么会有人投反对票。我投了赞成票,因为这个问题描述了一个技术问题,可以通过提供源代码来解释这个问题,其中被删除的部分是真实的(尽管不正确)尝试解决问题。不确定为什么会有人投反对票。我投了赞成票,因为问题描述了一个技术问题,通过提供源代码解释了这个问题,其中被删除的部分是解决问题的真正(尽管不正确)尝试。