我有一个程序调用{{1}}和
PdfPageLabels.getPageLabels()
在同一个PdfPageLabels.getPageLabelFormats()
对象上
我的代码的连续行:
PdfReader
我原本期望这两个调用总是返回相同长度的数组,它们应该是相同的标签。大部分时间都是如此,但偶尔情况并非如此。
我有一个例子。它是一个150Mb的PDF文件,通过PdfPageLabels.PdfPageLabelFormat[] pplf = PdfPageLabels.getPageLabelFormats(reader);
String[] labs = PdfPageLabels.getPageLabels(reader);
看似有4670个标签,但getPageLabels()
只有1个。
所以我的问题是:在什么情况下两个调用可以返回不同长度的数组?
答案 0 :(得分:1)
两种方法之间的区别很简单:
getPageLabels()
返回数组中每个页面的标签。如果您的PDF有4670页,您将获得一个包含4670 String
个值的数组。getPageLabelFormat()
返回一个数组,其中包含文档中使用的格式。它不会返回String
个值,而是返回PdfPageLabelFormat
个实例。在许多情况下,整个文档中只使用一种页面标签格式。例如:
您有一个介绍五页的文档,编号为 i , ii , iii , iv 和 v 。然后你有一百页,数字1到100。
在这种情况下,getPageLabels()
应返回一个包含105个String
值的数组。但是,getPageLabelFormat()
方法只返回两个PageLabelFormat
值,因为我们只使用两种页面标签格式:
仅需要起始格式,物理页面2到4具有与物理页面1相同的格式;物理页7到105的格式与第6页相同。