我正在使用Ghostscript.NET,这是一个方便的用于 Ghostscript 功能的 C# 包装器。我有一批从客户端发送的 PDF 文件被转换为 ASP .NET WebAPI 服务器上的图像并返回给客户端。
public static IEnumerable<Image> PdfToImagesGhostscript(byte[] binaryPdfData, int dpi)
{
List<Image> pagesAsImages = new List<Image>();
GhostscriptVersionInfo gvi = new GhostscriptVersionInfo(AppDomain.CurrentDomain.BaseDirectory + @"\bin\gsdll32.dll");
using (var pdfDataStream = new MemoryStream(binaryPdfData))
using (var rasterizer = new Ghostscript.NET.Rasterizer.GhostscriptRasterizer())
{
rasterizer.Open(pdfDataStream, gvi, true);
for (int i = 1; i <= rasterizer.PageCount; i++)
{
Image pageAsImage = rasterizer.GetPage(dpi, dpi, i); // Out of Memory Exception on this line
pagesAsImages.Add(pageAsImage);
}
}
return pagesAsImages;
}
这通常可以正常工作(我通常使用 500 dpi,我知道这很高,但即使降至 300 我也可以重现此错误)。但是,如果我从客户端提供许多 PDF(例如 150 个 1 页 PDF),它通常会在 Ghostscript.NET Rasterizer 中遇到内存不足异常。我该如何克服呢?这应该穿线吗?如果是这样,那将如何工作?使用 64 位版本的 GhostScript 会有帮助吗?提前致谢。