获取创建的 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。至少你没有硬盘上临时文件的麻烦。
我创建了一个列表,其中包含我使用 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。至少你没有硬盘上临时文件的麻烦。