使用itext对PDF页面进行重新排序
我正在使用 库。谁能知道我如何在现有的pdf中移动页面?
实际上,我想
它类似于下面的内容,但我不知道它是如何工作的。
reader = new PdfReader(baos.toByteArray()); n = reader.getNumberOfPages();
reader.selectPages(String.format("%d, 1-%d", n, n-1));
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(filename));
stamper.close();
谁能详细解释一下?
回答:
该selectPages()
方法在我的书的第6章中进行了说明(请参见第164页)。在代码片段6.3和6.11的上下文中,它用于减少PdfReader
由PdfStamper
或消耗的正在读取的页面数PdfCopy
。但是,它也可以用于重新排序页面。首先让我解释一下语法。
该selectPages()
方法有不同的风格:
您可以传递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
,或者toc
等于8 n
等于10:
String.format("%d-%d, 1-%d", toc, n, toc -1)
有关该format()
方法的更多信息,请参阅API文档String
和Format
String语法。
以上是 使用itext对PDF页面进行重新排序 的全部内容, 来源链接: utcz.com/qa/410989.html