获取创建的 PDF 文档的页面

Get Pages of Created PDF Documents

我创建了一个列表,其中包含我使用 HtmlRenderer.PdfSharp.PdfGenerator 创建的文档。 现在我想用列表中文档的合并页面创建一个新的 PDF,而不将所有文档保存到我的硬盘。

以下代码无效,因为 pdfDocument 未在 PdfDocumentOpenMode.Import 中打开。但对我来说,似乎我只能通过将所有文档保存到我的硬盘驱动器并使用 PdfReader.Open().

打开它们来做到这一点
private PdfDocument CombinePdfs(List<PdfDocument> pdfDocuments)
{
    PdfDocument combinedPdf = new PdfDocument();
    foreach (var pdfDocument in pdfDocuments)
    {
        foreach (PdfPage page in pdfDocument.Pages)
        {
            combinedPdf.AddPage(page);
        }
    }
    return combinedPdf;
}

知道如何解决这个问题吗?

编辑:

以下代码对我有用。

private PdfDocument CombinePdfs(List<PdfDocument> pdfDocuments)
{
    PdfDocument combinedPdf = new PdfDocument();
    foreach (var pdfDocument in pdfDocuments)
    {
        MemoryStream stream = new MemoryStream();
        pdfDocument.Save(stream, false);
        PdfDocument importDocument = PdfReader.Open(stream, PdfDocumentOpenMode.Import);

        foreach (PdfPage page in importDocument.Pages)
        {
            combinedPdf.AddPage(page);
        }
    }

    return combinedPdf;
}

您可以将 PDF 文档保存到 MemoryStream 并从那里读取它们以避免文件 I/O。至少你没有硬盘上临时文件的麻烦。