利用iText PDF页面重新排序利用iText PDF页面重新排序(PDF Page re-ord

2019-05-12 12:27发布

我使用的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();

能详细的任何一个解释?

Answer 1:

selectPages()方法中解释第六章我的书(见第164页)。 在代码段6.3和6.11的情况下,它是用来降低由正被读取的页的数量PdfReader用于通过消耗PdfStamperPdfCopy 。 然而,它也可以用来重新排序的页面。 首先,请允许我解释的语法。

有所述的不同的口味selectPages()方法:

你可以通过一个List<Integer>包含要保留所有页码。 这份清单可以由增加页码,1,2,3,4,...如果你更改顺序,如:1,3,2,4,... PdfReader将有助于在改变顺序的页面。

您也可以通过一个字符串(这是在你做片段),使用的语法如下:

[!][o][odd][e][even]start[-end]

你可以有由逗号分隔的多个范围,以及! 改性剂去除那些已经选择了网页。 的范围内的变化是增量; 号被添加或出现的范围中删除。 的开始或结束可省略; 如果你省略这两个,你至少需要O(奇数;选择全部奇数页)或电子邮件(即使;选择全部偶数页)。

根据你的情况,我们有:

String.format("%d, 1-%d", n, n-1)

假设我们有一个10页的文档,然后n等于10和格式化操作的结果是: "10, 1-9" 。 在这种情况下, PdfReader会出现在最后一页的第一位,其次是9 1页。

现在,假设你有8页开始TOC,并且要将此TOC移动到第一页,那么你需要的东西是这样的: 8-10, 1-7 ,或者如果toc等于8和n等于10:

String.format("%d-%d, 1-%d", toc, n, toc -1)

有关更多信息format()方法,请参阅API文档String和格式字符串的语法 。



文章来源: PDF Page re-ordering using itext