iText 7 合并字节数组中的文档

Tom*_*adi 4 c# itext itext7

我使用 iTextSharp 来合并字节数组中的两个文档,如下所示:

using (MemoryStream ms = new MemoryStream())
using (Document doc = new Document())
using (PdfSmartCopy copy = new PdfSmartCopy(doc, ms))
{
    // Open document
    doc.Open();

    // Create reader from bytes
    using (PdfReader reader = new PdfReader(pdf1.DocumentBytes))
    {
        //Add the entire document instead of page-by-page
        copy.AddDocument(reader);
    }

    // Create reader from bytes
    using (PdfReader reader = new PdfReader(pdf2.DocumentBytes))
    {
        //Add the entire document instead of page-by-page
        copy.AddDocument(reader);
    }

    // Close document
    doc.Close();

    // Return array
    return ms.ToArray();
}
Run Code Online (Sandbox Code Playgroud)

由于很多内容发生了变化,我无法将其转换为 iText 7。有人会好心给我正确的方向吗?预先非常感谢!

Tom*_*adi 6

经过一番研究后我发现了这一点。这是解决方案(iText7),以防有人在转换代码时遇到问题:

using (MemoryStream ms = new MemoryStream())
using (PdfDocument pdf = new PdfDocument(new PdfWriter(ms).SetSmartMode(true)))
{
    // Create reader from bytes
    using (MemoryStream memoryStream = new MemoryStream(pdf1.DocumentBytes))
    {
        // Create reader from bytes
        using (PdfReader reader = new PdfReader(memoryStream))
        {
            PdfDocument srcDoc = new PdfDocument(reader);
            srcDoc.CopyPagesTo(1, srcDoc.GetNumberOfPages(), pdf);
        }
    }

    // Create reader from bytes
    using (MemoryStream memoryStream = new MemoryStream(pdf2.DocumentBytes))
    {
        // Create reader from bytes
        using (PdfReader reader = new PdfReader(memoryStream))
        {
            PdfDocument srcDoc = new PdfDocument(reader);
            srcDoc.CopyPagesTo(1, srcDoc.GetNumberOfPages(), pdf);
        }
    }

    // Close pdf
    pdf.Close();

    // Return array
    return ms.ToArray();
}
Run Code Online (Sandbox Code Playgroud)