C# 通过 MemoryStream 附加 Pdf 页面

发布于 2024-11-24 13:16:46 字数 590 浏览 2 评论 0原文

我目前正在处理一些报告,需要在一份 PDF 中附加几份报告。为此,我使用 ReportViewer 获取不同字节 [] 中的报告。一旦我将所有报告放在列表中,我就会继续使用以下方法加入它们

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();
       }

现在...一旦我完成,生成的 byte[] 就拥有所有数据,但是当我在网站上显示报告时,我只得到最后一个报告出现在屏幕上。有什么想法吗?

I'm currently working on some reports and need to append several reports in one PDF. In order to do so I'm using ReportViewer to get the reports in different byte[]. Once I have all the reports in a List I proceed to join them using the following method

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();
       }

Now... once I'm done the resulting byte[] has all the data however when I display the reports on my website I only get the last report to appear on the screen. Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

好菇凉咱不稀罕他 2024-12-01 13:16:46

您不能仅通过合并文件字节来合并 PDF。 PDF 有一个内部格式。使用 Foxit 或 PDFSAM 等 PDF 库将 PDF 页面合并到单个文件中。

You can't merge PDFs by just merging the file bytes. PDFs have an internal format. Use a PDF library such as Foxit or PDFSAM to merge PDF pages into a single file.

森罗 2024-12-01 13:16:46

您可以使用 Aspose.Pdf for .NET

披露:我在 Aspose 担任开发人员传播者。

You may use Aspose.Pdf for .NET to Concatenate, Insert or Append PDF documents either from MemoryStream or files.

Disclosure: I work as developer evangelist at Aspose.

老娘不死你永远是小三 2024-12-01 13:16:46

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

以下是如何使用 Docotic.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(图书馆供应商)工作。

As @AresAvatar said, you need to use a PDF library for your task.

Here is a sample for how to do this using Docotic.Pdf library.

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();
        }
    }
}

Disclaimer: I work for Bit Miracle (vendor of the library).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文