【发布时间】:2016-05-09 06:40:04
【问题描述】:
我有一个存储为 list<byte[]> 的 PDF 列表。我尝试使用 PDFsharp 连接所有这些 PDF 文件,但在我的操作之后,我得到了一个具有适当页数的 PDF,但所有页面都是空白的。看起来我丢失了一些标题或其他东西,但我找不到在哪里。
我的代码:
PdfDocument output = new PdfDocument();
try
{
foreach (var report in reports)
{
using (MemoryStream stream = new MemoryStream(report))
{
PdfDocument input = PdfReader.Open(stream, PdfDocumentOpenMode.Import);
foreach (PdfPage page in input.Pages)
{
output.AddPage(page);
}
}
}
if (output.Pages.Count <= 0)
{
throw new Exception("Empty Document");
}
MemoryStream final = new MemoryStream();
output.Save(final);
output.Close();
return final.ToArray();
}
catch (Exception e)
{
throw new Exception(e.ToString());
}
我想将其返回为byte[],因为我稍后会使用它们:
return File(report, System.Net.Mime.MediaTypeNames.Application.Octet, "test.pdf");
这将返回具有正确页数的 PDF,但全部为空白。
【问题讨论】:
-
是否输出。保存(文件名);工作吗?
-
保存到文件时是否得到正确的文件?如果不是,那么您导入的 PDF 文件可能存在问题。如果是,那么问题可能出在您正在使用的 MemoryStream 上(在您调用 ToArray 之前它会关闭两次 - 如果没有 Debugger,我不能说这是否有问题)。如果没有 MCVE,我不会尝试调试您的问题。
-
当我只返回一个 pdf 而不使用 PDFSharp 时,它可以正常工作。当我使用 PDFSharp 将 6 个 pdf 与一页连接时,我得到 1 个 6 页的 pdf,但所有页面都是空白的。
-
仅使用代码 sn-p 且没有 PDF 文件,我们无法正确调查此问题。请提供 MCVE。当您保存到文件时,您是否也会得到六个空白页?
-
是的,我得到了六个空白页,但文件大小正确。此外,当我检查最终的
byte[]它包含信息时,看起来我丢失了标题。我不能给你 pdf 样本,因为我是在运行时从 SSRS 报告生成的。我 100% 确定我生成的 PDF 是正确的,因为我过去使用过它。
标签: c# pdf concatenation pdfsharp