iText 7 PdfReader 支持部分阅读吗?
Does iText 7 PdfReader support partial reading?
我正在从 iText 5 转移到 7。我们处理巨大的 PDF 文件,因此根本不需要将整个 PDF 解析到内存中。 5中,PdfReader上有一个特殊的构造函数强制'partial mode'。 iText 7 总是解析整个 PDF 还是总是有效地使用 'partial mode'?
查看 iText 7 源代码,PdfReader 似乎不再缓存文档内容。相反,PdfDocument 负责缓存。这意味着应该可以为每个页面创建一个新的 PdfDocument,这与 PdfReader 中的 iText 5 'partial mode' 具有相同的效果。
如果有人能证实我的想法,我将不胜感激。
iText7 支持部分(或者我更愿意称之为惰性)阅读模式,默认情况下处于活动状态。这意味着对象将根据需要 read/loaded。当然,一些必要的东西无论如何都会被读取(如交叉引用table、目录等,以及嵌套的直接对象)。
此外,PdfObject
在 iText7 中有 release()
方法,它从内存中释放该对象,如果需要,将再次读取该对象。但是,如果您使用大量高级 API,那么 release()
可能没有那么有用,实际上创建多个 PdfDocument
实例可能更有用和简单。
重要说明:由于文件很大,它们可能位于磁盘上,因此使用PdfReader(String)
或PdfReader(File)
构造函数非常重要.那些利用随机读取的可能性。否则,如果你简单地传递一个InputStream
,流将首先被完全读入内存,然后构造文档。这当然仍然为数据结构节省了一些内存,但将源文档保留在内存中,我认为这是不希望的。
我正在从 iText 5 转移到 7。我们处理巨大的 PDF 文件,因此根本不需要将整个 PDF 解析到内存中。 5中,PdfReader上有一个特殊的构造函数强制'partial mode'。 iText 7 总是解析整个 PDF 还是总是有效地使用 'partial mode'?
查看 iText 7 源代码,PdfReader 似乎不再缓存文档内容。相反,PdfDocument 负责缓存。这意味着应该可以为每个页面创建一个新的 PdfDocument,这与 PdfReader 中的 iText 5 'partial mode' 具有相同的效果。
如果有人能证实我的想法,我将不胜感激。
iText7 支持部分(或者我更愿意称之为惰性)阅读模式,默认情况下处于活动状态。这意味着对象将根据需要 read/loaded。当然,一些必要的东西无论如何都会被读取(如交叉引用table、目录等,以及嵌套的直接对象)。
此外,PdfObject
在 iText7 中有 release()
方法,它从内存中释放该对象,如果需要,将再次读取该对象。但是,如果您使用大量高级 API,那么 release()
可能没有那么有用,实际上创建多个 PdfDocument
实例可能更有用和简单。
重要说明:由于文件很大,它们可能位于磁盘上,因此使用PdfReader(String)
或PdfReader(File)
构造函数非常重要.那些利用随机读取的可能性。否则,如果你简单地传递一个InputStream
,流将首先被完全读入内存,然后构造文档。这当然仍然为数据结构节省了一些内存,但将源文档保留在内存中,我认为这是不希望的。