【发布时间】:2012-01-13 05:10:27
【问题描述】:
我想要合并四个 MemoryStream 数据,然后打开 pdfDocument,而不创建单个文件。
可以将它们写到文件中,然后合并它们,但这是不好的做法,也会导致一些问题,所以我想避免这种情况。
但是,我找不到将 MemoryStreams 与 iText5 for .NET 合并的方法。
现在,我就是这样处理文件的:
private static void ConcatenateDocuments()
{
var stream = new MemoryStream();
var readerFrontPage = new PdfReader(Folder + FrontPageName);
var readerDocA = new PdfReader(Folder + docA);
var readerDocB = new PdfReader(Folder + DocB);
var readerAppendix = new PdfReader(Folder + Appendix);
var pdfCopyFields = new PdfCopyFields(stream);
pdfCopyFields.AddDocument(readerFrontPage);
pdfCopyFields.AddDocument(readerDocA );
pdfCopyFields.AddDocument(readerDocB);
pdfCopyFields.AddDocument(readerAppendix);
pdfCopyFields.Close();
SavePdf(stream, FilenameReport);
}
因为我需要删除文件的使用,所以我保留了 MemoryStream,因为不同的部分是由不同的资源构建的。所以我参考了这些内存流。
如何做到这一点?
【问题讨论】:
-
你不能使用 var readerFrontPage = new PdfReader(yourMemoryStream);
-
就是这样,我无法让它工作。我遇到的错误之一是“找不到 PDF 标头签名”。然而,大多数遇到此问题的人都使用文件,这不是一个选项。
-
虽然它接缝 PdfReader 无法获取流,但流的数组有效。 var readerFrontPage = new PdfReader(streamFrontPage.ToArray());你我还不能回答我自己的问题......
标签: c#-4.0 merge itext memorystream