我有一个从API获得的字节数组。
byte[] sticker = db.call_API_print_sticker(Id);
我必须多次调用此方法然后转换为pdf。我想将它存储在一个数组数组中,然后一旦我拥有它们就转换它们
如何存储它然后将字节数组pdf合并为一个。
答案 0 :(得分:0)
byte[]
可能只是一个pdf。我认为你可以做到
System.IO.File.WriteAllBytes(@"sticker.pdf", sticker);
如果不是这种情况,最简单的方法是使用nuget包ex: PdfSharp将多个pdf合并为一个。
要点(假设每个贴纸包含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返回一个单字节数组。