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将其读回,但由于权限(尚未),我无法在生产环境中执行此操作。