getPageLabels和getPageLabelFormats有什么区别?

时间:2015-12-03 21:47:54

标签: java pdf itext

我有一个程序调用{​​{1}}和 PdfPageLabels.getPageLabels()在同一个PdfPageLabels.getPageLabelFormats()对象上 我的代码的连续行:

PdfReader

我原本期望这两个调用总是返回相同长度的数组,它们应该是相同的标签。大部分时间都是如此,但偶尔情况并非如此。

我有一个例子。它是一个150Mb的PDF文件,通过PdfPageLabels.PdfPageLabelFormat[] pplf = PdfPageLabels.getPageLabelFormats(reader); String[] labs = PdfPageLabels.getPageLabels(reader); 看似有4670个标签,但getPageLabels()只有1个。

所以我的问题是:在什么情况下两个调用可以返回不同长度的数组?

1 个答案:

答案 0 :(得分:1)

两种方法之间的区别很简单:

  • getPageLabels()返回数组中每个页面的标签。如果您的PDF有4670页,您将获得一个包含4670 String个值的数组。
  • getPageLabelFormat()返回一个数组,其中包含文档中使用的格式。它不会返回String个值,而是返回PdfPageLabelFormat个实例。在许多情况下,整个文档中只使用一种页面标签格式。

例如:

您有一个介绍五页的文档,编号为 i ii iii iv v 。然后你有一百页,数字1到100。

在这种情况下,getPageLabels()应返回一个包含105个String值的数组。但是,getPageLabelFormat()方法只返回两个PageLabelFormat值,因为我们只使用两种页面标签格式:

  • 有人说第一个物理页面以小写罗马数字开头,以 i 开头。
  • 有人说第六个物理页面以阿拉伯数字开头,从1开始。

仅需要起始格式,物理页面2到4具有与物理页面1相同的格式;物理页7到105的格式与第6页相同。