【问题标题】:combining byte arrays to pdf将字节数组合并为 pdf
【发布时间】:2017-05-15 14:25:04
【问题描述】:

我有一个从 API 获得的字节数组。

byte[] sticker = db.call_API_print_sticker(Id);

我必须多次调用此方法,然后转换为 pdf。我想将它存储在一个数组数组中,然后在我拥有它们后转换它们

如何存储它,然后将字节数组 pdf 合并为一个。

【问题讨论】:

    标签: c# asp.net arrays pdf


    【解决方案1】:

    使用 PDFSharp 作为 Nuget,我编写了以下纯粹适用于字节数组的 C# 方法:

        public byte[] CombinePDFs(List<byte[]> srcPDFs)
        {
            using (var ms = new MemoryStream())
            {
                using (var resultPDF = new PdfDocument(ms))
                {
                    foreach (var pdf in srcPDFs)
                    {
                        using (var src = new MemoryStream(pdf))
                        {
                            using (var srcPDF = PdfReader.Open(src, PdfDocumentOpenMode.Import))
                            {
                                for (var i = 0; i < srcPDF.PageCount; i++)
                                {
                                    resultPDF.AddPage(srcPDF.Pages[i]);
                                }
                            }
                        }
                    }
                    resultPDF.Save(ms);
                    return ms.ToArray();
                }
            }
        }
    

    因此,上述方法采用源 PDF 的数组列表并将它们组合并为结果 PDF 返回一个单字节数组。

    【讨论】:

      【解决方案2】:

      byte[] 可能只是一个 pdf。我认为你可以这样做

      System.IO.File.WriteAllBytes(@"sticker.pdf", sticker);
      

      如果不是这样,最简单的方法是使用 nuget 包 ex: PdfSharp 将多个 pdf 合并为一个。

      An example of combining pdfs

      要点(假设每个贴纸包含 1 页):

      IEnumerable<byte[]> stickers;
      using (var combinedPdf = new PdfDocument(@"stickers.pdf"))
      foreach (var pdf in stickers)
      using (MemoryStream ms = new MemoryStream(pdf))
      {
          var someSticker = PdfReader.Open(ms);
          combinedPdf.AddPage(someSticker.Pages[0]);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-03-20
        • 2018-02-02
        • 2016-11-15
        • 1970-01-01
        • 2017-11-27
        • 2015-09-16
        • 1970-01-01
        相关资源
        最近更新 更多