0
我一直在嘗試使用各種方法將大型PdfDocument保存到字節數組中,但始終回到內存不足異常(文件是200 MB和2.5K頁)。Large PDFsharp(MigraDoc)PdfDocument to byte []
我最初的嘗試是簡單地使用的MemoryStream
public static byte[] ProcessLargePdfDocument(PdfDocument pdfDocument)
{
using (MemoryStream stream = new MemoryStream())
{
pdfDocument.Save(stream, true);
return stream.ToArray();
}
}
然後,我嘗試在一些緩衝加入
public static byte[] ProcessLargePdfDocument(PdfDocument pdfDocument, long whereToStartReading = 0)
{
List<byte> byteList = new List<byte>();
using (MemoryStream stream = new MemoryStream())
{
pdfDocument.Save(stream, false);
byte[] buffer = new byte[megabyte];
stream.Seek(whereToStartReading, SeekOrigin.Begin);
int bytesRead = stream.Read(buffer, 0, megabyte);
while (bytesRead > 0)
{
byteList.AddRange(buffer);
bytesRead = stream.Read(buffer, 0, megabyte);
}
}
return byteList.ToArray();
}
無論我怎麼努力,我得到一個內存不足的異常在pdfDocument.Save呼叫。我可以將它寫入文件位置,並在dev中使用緩衝的FileStream將其讀回,但由於權限(尚未),我無法在生產環境中執行此操作。