将字节数组合为pdf

时间:2017-05-15 14:25:05

标签: c# asp.net arrays pdf

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

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

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

使用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返回一个单字节数组。