フォルダ内のPDFデータを印刷する処理の中で、System.Drawingのメモリ不足によるエラーが発生しています。
pd_PrintPageは例のようにPrintDocumentクラスを使用したPrintメソッドで呼び出しているのですが、pd_PrintPageの呼び出し回数が250を超えたあたりでメモリ不足のエラーが出てしまいます。
Disposeが適切にできていないためかと思われますが、解決策はないでしょうか?
PDFを画像イメージに変換するのは、PdfiumViewerというライブラリを使っています。
C#
1 private void pd_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) 2 { 3 //フォルダ内ファイル取得 4 var fileName = "印刷対象のファイルパス"; 5 PdfiumViewer.PdfDocument document = PdfiumViewer.PdfDocument.Load(fileName); 6 //PDFから画像データを作成 7 var dpiX = e.Graphics.DpiX; 8 var dpiY = e.Graphics.DpiY; 9 //DPI・Pixel変換をする処理 10 var w = GetA4PixelWidth((int)dpiX); 11 var h = GetA4PixelWidth((int)dpiY); 12 var img = document.Render(pageNo, w, h, dpiX, dpiY, false); 13 //画像の描画 14 e.Graphics.DrawImage(img, 0, 0, e.Graphics.VisibleClipBounds.Width, e.Graphics.VisibleClipBounds.Height); 15 e.HasMorePages = false; 16 e.Graphics.Dispose(); 17 img.Dispose(); 18 }