将巨大的 40000 页 pdf 拆分为单页,itextsharp,内存不足异常

2023-12-21

我收到了包含大量数据的巨大 PDF 文件。目前的 PDF 大小为 350 MB,大约有 40000 页。当然,如果能得到更小的 PDF 就好了,但这就是我现在必须处理的:-(

我可以在 acrobat reader 中打开它,加载时会有一些延迟,但之后 acrobat reader 很快。

现在我需要将巨大的文件拆分为单页,然后尝试从 pdf 页面中读取一些收件人数据,然后将每个收件人应该收到的一两页发送给每个特定收件人。

这是迄今为止我使用 itextsharp 编写的非常小的代码:

var inFileName = @"huge350MB40000pages.pdf";
PdfReader reader = new PdfReader(inFileName);
var nbrPages = reader.NumberOfPages;
reader.Close();

发生的情况是,它到达第二行“new PdfReader”,然后在那里停留大约 10 分钟,该进程的大小达到大约 1.7 GB,然后我收到 OutOfMemoryException。

我认为“new PdfReader”尝试将整个 PDF 读入内存。

有其他/更好的方法来做到这一点吗? 例如,我能否以某种方式仅将 PDF 文件的一部分读入内存,而不是一次全部读入内存? 使用其他库比 itextsharp 能更好地工作吗?


根据我的阅读,实例化 PdfReader 时,您应该使用接受 RandomAccessFileOrArray 对象的构造函数。免责声明:我自己还没有尝试过这一点。

iTextSharp.text.pdf.PdfReader reader = new iTextSharp.text.pdf.PdfReader(new iTextSharp.text.pdf.RandomAccessFileOrArray(@"C:\PDFFile.pdf"), null);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将巨大的 40000 页 pdf 拆分为单页,itextsharp,内存不足异常 的相关文章

随机推荐