The selectPages()
方法解释于第6章 http://manning.com/lowagie2/samplechapter6.pdf我的书(见第 164 页)。在代码片段 6.3 和 6.11 的上下文中,它用于减少正在读取的页面数PdfReader
供消费PdfStamper
or PdfCopy
。但是,它也可用于重新排序页面。首先请允许我解释一下语法。
里面有不同的口味selectPages()
method:
你可以通过一个List<Integer>
包含您要保留的所有页码。该列表可以包含递增的页码 1, 2, 3, 4,... 如果您更改顺序,例如:1, 3, 2, 4,...PdfReader
将按照更改后的顺序提供页面。
您还可以使用以下语法传递字符串(这是在代码片段中完成的操作):
[!][o][odd][e][even]start[-end]
您可以有多个范围,并用逗号分隔,并且 !修改器删除页面
从已经选择的内容中。范围变化是增量的;数字被添加
或在出现范围时删除。开始或结束可以省略;如果你省略
两者,您至少需要 o(奇数;选择所有奇数页)或 e(偶数;选择所有偶数页)。
对于您的情况,我们有:
String.format("%d, 1-%d", n, n-1)
假设我们有一个10页的文档,那么n
等于10,格式化操作的结果为:"10, 1-9"
。在这种情况下,PdfReader
将把最后一页显示为第一页,然后显示第 1 至第 9 页。
现在假设您有一个从第 8 页开始的目录,并且您想将此目录移至第一页,那么您需要如下所示的内容:8-10, 1-7
, or if toc
等于 8 且n
等于 10:
String.format("%d-%d, 1-%d", toc, n, toc -1)
有关的更多信息format()
方法,请参阅 API 文档String http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#format%28java.lang.String,%20java.lang.Object...%29和格式字符串语法 http://docs.oracle.com/javase/6/docs/api/java/util/Formatter.html#syntax.