我使用的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()
方法中解释第六章我的书(见第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(奇数;选择全部奇数页)或电子邮件(即使;选择全部偶数页)。
根据你的情况,我们有:
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
和格式字符串的语法 。