ユーザーが多くのグラフを生成し、PDF経由でエクスポートできるようにするasp.net3.5アプリケーションがあります。これは小さいPDF(100ページ未満)では問題なく機能しますが、大きいPDFを実行すると、ランダムエラーが発生します。私たちが見たエラーのいくつかは次のとおりです。
--System.OutOfMemoryException
--HTML文字列をレンダリングできませんでした。HTML文字列から画像を取得できませんでした。LoadHtmlConcurrencyLevel=1を設定してみてください
。--クローンエラー。メモリ不足
..--変換が完了するのを待っているタイムアウト。
--System.OutOfMemoryException:メモリが不足しています。System.Drawing.Image.FromStream(Stream stream、Boolean useEmbeddedColorManagement、Boolean validateImageData)at System.Drawing.Image.FromStream(Stream stream)
大きなレポートを複数回実行すると、通常、さまざまな例外が発生します。IISがクラッシュすることがあり、アプリケーションをバックアップするためにiisresetを実行する必要があります。
これが私たちが実行するコードです。チャート(png画像)を使用してPDFドキュメントを作成し、それをバイト配列にエクスポートしてメモリストリームに配置します。一部の画像などを回転させる関数にメモリストリームを渡し、doc.saveメソッドを呼び出してエクスポートします。
Dim mainPageBytes() As Byte = PDF.GetBytes
Dim stream As New System.IO.MemoryStream(mainPageBytes)
Dim existingDoc As New PDFCreator.Document(stream)
Dim doc As PDFCreator.Document = GetDocument(mainPageBytes, GetChartingPageNumbers(PDF.ConversionSummary), pageOrientation, user, existingDoc)
doc.Save(response, True, Me.DocumentName)