我正在使用 PDFClown 使用数据库中的数据生成一个大型报告 pdf 文件。
该过程需要很长时间,并且当页面数接近 150 标记占用超过 1.5GB 的内存并出现错误时,最终会耗尽内存:
PDFClown.dll 中出现了“System.OutOfMemoryException”类型的第一次机会异常
因为我需要定期生成超过 1500 页的报告,所以这是一个主要问题。
有什么我可以做的:
- 不会耗尽内存(必需)
- 加快文件创建速度(理想情况下)
请注意:生成的报告(使用较小的数据集)是准确的,尽管文件大小相当大。
这是我的代码示例:
protected void PopulateReport()
{
foreach (Page page in _lstPages)
{
if (page != _Titlepage)
{
PrimitiveComposer composer = new PrimitiveComposer(page);
BlockComposer blockComposer = new BlockComposer(composer);
DataRow drInspection;
if (_mapPage1Rows.TryGetValue(page, out dataRow))
{
GeneratePage1(page, composer, blockComposer, dataRow);
}
else if (_mapPage2Rows.TryGetValue(page, out dataRow))
{
GeneratePage2(page, composer, blockComposer, dataRow);
}
}
}
}
protected void GeneratePage1()
{
composer.BeginLocalState();
composer.SetFont(ReportFonts.GetFont(GetPDFDocument(), bIsFieldName, false), nFontSize);
blockComposer.Begin(GetRectangle(fMarginX, fMarginY, fWidth, nFontSize), AlignX, AlignY);
int nIndex = blockComposer.ShowText(strText, false);
blockComposer.End();
....
composer.End();
composer.Flush();
}