When I use GhostscriptRasterizer.GetPage to get PDF page as image, I got the exception, not happening all the time:
System.OutOfMemoryException: Insufficient memory to continue the execution of the program.
System.Runtime.InteropServices.Marshal.AllocHGlobal(IntPtr cb)
Ghostscript.NET.Viewer.GhostscriptViewerDisplayHandler.Page(IntPtr handle, IntPtr device, Int32 copies, Int32 flush)
Ghostscript.NET.GhostscriptDisplayDeviceHandler.display_page(IntPtr handle, IntPtr device, Int32 copies, Int32 flush)
Ghostscript.NET.Interpreter.GhostscriptInterpreter.Run(String str)
Ghostscript.NET.Viewer.GhostscriptViewerPdfFormatHandler.ShowPage(Int32 pageNumber)
Ghostscript.NET.Viewer.GhostscriptViewer.ShowPage(Int32 pageNumber, Boolean refresh)
Ghostscript.NET.Rasterizer.GhostscriptRasterizer.GetPage(Int32 xDpi, Int32 yDpi, Int32 pageNumber)
Code:
using (var source = new MemoryStream(documentFileContent))
{
using (var rasterizer = new Ghostscript.NET.Rasterizer.GhostscriptRasterizer())
{
rasterizer.Open(source, version, true);
for (var i = 1; i <= rasterizer.PageCount; i++)
{
var img = rasterizer.GetPage(desiredDpi, desiredDpi, i);
Comments: ** Comment from web user: fudong **
System.OutOfMemoryException: Insufficient memory to continue the execution of the program.
System.Runtime.InteropServices.Marshal.AllocHGlobal(IntPtr cb)
Ghostscript.NET.Viewer.GhostscriptViewerDisplayHandler.Page(IntPtr handle, IntPtr device, Int32 copies, Int32 flush)
Ghostscript.NET.GhostscriptDisplayDeviceHandler.display_page(IntPtr handle, IntPtr device, Int32 copies, Int32 flush)
Ghostscript.NET.Interpreter.GhostscriptInterpreter.Run(String str)
Ghostscript.NET.Viewer.GhostscriptViewerPdfFormatHandler.ShowPage(Int32 pageNumber)
Ghostscript.NET.Viewer.GhostscriptViewer.ShowPage(Int32 pageNumber, Boolean refresh)
Ghostscript.NET.Rasterizer.GhostscriptRasterizer.GetPage(Int32 xDpi, Int32 yDpi, Int32 pageNumber)
Code:
using (var source = new MemoryStream(documentFileContent))
{
using (var rasterizer = new Ghostscript.NET.Rasterizer.GhostscriptRasterizer())
{
rasterizer.Open(source, version, true);
for (var i = 1; i <= rasterizer.PageCount; i++)
{
var img = rasterizer.GetPage(desiredDpi, desiredDpi, i);
Comments: ** Comment from web user: fudong **
I have tried to use the following block to fix it
try{
img.Save(tmpFile, ImageFormat.Jpeg);
}
finally
{
//CI build sometimes fail due to OutOfMemeoryException. So release memory ASAP
img.Dispose();
}
but, I still got the except sometimes , not always got exception.