【发布时间】:2018-09-21 14:25:58
【问题描述】:
我正在尝试通过一个列表将多个 PDF 合并到一个文件中,该列表在 byte[] 中包含它们的内容。使用 PdfReader 从 Byte[] 列表打开文档时,程序会启动以下异常:“文档没有页面”。当我查看 Byte[] 列表的内容是完整的,但总是启动异常。
我尝试单独下载该单个页面的内容,并且生成的文档在打开时启动错误。 pdf 的分割做得很好,因为它生成了物理的每个文档,并使其非常适合 PDF 的每一页。
感谢您在这种情况下的帮助或意见。
这是我用来拆分和合并文档的代码:
public List<byte[]> SplitPDF(byte[] contentPdf)
{
try
{
var listBythe = new List<byte[]>();
PdfImportedPage page = null;
PdfCopy PdfCopy = null;
PdfReader reader = new PdfReader(contentPdf);
for (int numPage = 1; numPage <= reader.NumberOfPages; numPage++)
{
Document doc = new Document(PageSize.LETTER);
var mStream = new MemoryStream();
PdfCopy = new PdfCopy(doc, mStream);
doc.Open();
page = PdfCopy.GetImportedPage(reader, numPage);
PdfCopy.AddPage(page);
listBythe.Add(mStream.ToArray());
doc.Close();
}
MergePdfToPage(listBythe);
return listBythe;
}
catch (Exception ex)
{
throw ex;
}
}
private byte[] MergePdfToPage(List<byte[]>contentPage)
{
byte[] docPdfByte = null;
var ms = new MemoryStream();
using (Document doc = new Document(PageSize.LETTER))
{
PdfCopy copy = new PdfCopy(doc, ms);
doc.Open();
var num = doc.PageNumber;
foreach (var file in contentPage.ToArray())
{
using (var reader = new PdfReader(file))
{
copy.AddDocument(reader);
}
}
doc.Close();
docPdfByte = ms.ToArray();
}
return docPdfByte;
【问题讨论】: