使用Freeware.Pdf2Png转换PDF为PNG时大文档仅部分页面成功的问题
使用Freeware.Pdf2Png转换大页数PDF丢失页面的问题及解决方案
实现场景
在C#中通过Freeware.Pdf2Png将多页PDF文档拆分转为对应数量的PNG图片,首先将PDF文件转为FileStream:
seleccionado = new FileStream(ruta_archivo, FileMode.OpenOrCreate, FileAccess.ReadWrite);
其中ruta_archivo为目标PDF的文件路径,后续基于该流调用Freeware.Pdf2Png的转换接口批量处理所有页面。
问题现象
小页数PDF(1页、36页)转换完全正常,但处理446页的PDF时,仅成功转换271页。确认原PDF文件无损坏,可正常查看全部页面。
疑问点
- 为何大页数PDF无法完成全页转换?
- 库本身是否存在页数或文件大小限制?
- 是否是FileStream的创建方式导致的问题?
注:因合规要求,仅允许使用MIT或Apache 2.0协议的库(如Freeware.Pdf2Png),无法采用AGPL/GPL协议的工具(如iTextPdf、PDFSharp)。
解决方案
问题根源在于大页数转换过程中资源占用过高,即便使用using语句管理流资源也无法有效释放。在每次单页转换完成后手动触发垃圾回收,即可解决页面丢失问题,修正后的单页转换代码如下:
Freeware.Pdf2Png.ConvertConvert(pdf_file_stream, page-number); GC.Collect(); GC.WaitForPendingFinalizers();
内容的提问来源于stack exchange,提问作者Jaime
相关产品推荐
相关产品推荐

