Chinese Simplified (简体中文)

循环访问文档页面

在处理分析、识别或合成结果时,您可能需要循环访问文档页面以及页面的块。在此情况下,您应该考虑到当请求查看或编辑文档元素(例如,页面或块)时,其数据会被载入内存并会一直保留到被显式卸载。这可能会导致“内存不足”的错误。要防止这种情况,请遵循以下建议。

循环访问文档页面

使用 FRDocument 对象的处理方法时,布局和图像文档 可以自动保存 到磁盘,这取决于 PageFlushingPolicy 属性的所选值。

但是如果您请求查看或编辑文档页面及其块,数据将不会自动卸载或保存。如果正在查看或编辑多个页面,则应在完成对每个页面的处理后卸载数据。这意味着您应该调用 FRPage 对象的 Flush 方法,如果使用 .NET,则需额外调用 GC.CollectGC.WaitForPendingFinalizers

另一方面,如果在循环访问页面时做了一些更改,您应该调用 Flush 方法来保存这些更改。否则,如果您调用 SaveToFolder 或相应的一种 FRDocument 导出方法等,您的更改将被保存到文件夹中(或导出的文档),但会将其从正在处理的对象中清除。

注:Flush 行为方法取决于 IFRDocument::PageFlushingPolicy 属性的值。如果 PageFlushingPolicy 的值是 PFP_FlushToDisk,调用方法会卸载布局和图像文档,但会将其保存到磁盘。如为 PFP_Auto,若文档超过 30 页,调用方法卸载数据,但将其保存到磁盘;否则,数据将保留在内存中。如为 PFP_KeepInMemory,则此数据不会被卸载。当您在一个解决方案中既处理小文档又处理大文档时,这会很方便,因为您可以使用同一代码进行处理。

C# 代码

C++ (COM) 代码

另请参阅

FRDocument

处理文本

24.03.2023 8:51:52

Usage of Cookies. In order to optimize the website functionality and improve your online experience ABBYY uses cookies. You agree to the usage of cookies when you continue using this site. Further details can be found in our Privacy Notice.