c#通过MemoryStream附加Pdf页面

本文关键字:Pdf 页面 附加 MemoryStream 通过 | 更新日期: 2023-09-27 18:02:02

我目前正在处理一些报告,需要在一个PDF中附加几个报告。为了做到这一点,我使用ReportViewer来获取不同字节[]的报告。一旦我在List中有了所有的报告,我就使用下面的方法

将它们连接起来
byte[] appendBuffers(List<byte[]> arrays)
        {
            List<byte> byteList = new List<byte>();
            for (int i = 0; i < arrays.Count; i++)
            {
              for (int j = 0; j < arrays[i].Length; j++)
              {
                byteList.Add(arrays[i][j]);
              }
            }
        return byteList.ToArray();
       }

现在…一旦我完成了结果字节[]有所有的数据,但当我在我的网站上显示的报告,我只得到最后一个报告出现在屏幕上。什么好主意吗?

c#通过MemoryStream附加Pdf页面

不能通过合并文件字节来合并pdf。pdf有一个内部格式。使用PDF库(如Foxit或PDFSAM)将PDF页面合并为单个文件。

您可以使用。net中的Aspose.Pdf来连接,插入或追加来自MemoryStream或文件的PDF文档。

披露:我是Aspose的开发者布道师

正如@AresAvatar所说,您需要为您的任务使用PDF库。

下面是如何使用doctic . pdf库完成此操作的示例。

byte[] appendBuffers(List<byte[]> arrays)
{
    using (PdfDocument document = new PdfDocument())
    {
        for (int i = 0; i < arrays.Count; i++)
            document.Append(arrays[i]);
        using (MemoryStream ms = new MemoryStream())
        {
            document.Save(ms);
            return ms.ToArray();
        }
    }
}

免责声明:我为Bit Miracle(库的供应商)工作。