gpt4 book ai didi

java - 使用 itext 重新排序 PDF 页面

转载 作者:行者123 更新时间:2023-11-30 06:20:34 25 4
gpt4 key购买 nike

我正在使用 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() chapter 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() 的更多信息方法,请参阅 String 的 API 文档和 Format String syntax .

关于java - 使用 itext 重新排序 PDF 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21600040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com