【发布时间】:2018-03-29 02:54:16
【问题描述】:
使用iText,我们可以轻松更改链接的缩放级别。甚至有一块code 可以为GoTo 目标类型执行此操作。为方便起见,请在下方查找。
PdfReader reader = new PdfReader(src);
PdfDictionary page = reader.getPageN(11);
PdfArray annots = page.getAsArray(PdfName.ANNOTS);
for (int i = 0; i < annots.size(); i++) {
PdfDictionary annotation = annots.getAsDict(i);
if (PdfName.LINK.equals(annotation.getAsName(PdfName.SUBTYPE))) {
PdfArray d = annotation.getAsArray(PdfName.DEST);
if (d != null && d.size() == 5 && PdfName.XYZ.equals(d.getAsName(1)))
d.set(4, new PdfNumber(0));
}
}
该代码仅处理 PDF 文件中的一种目标类型。我有兴趣更改其他类型目的地的缩放(如果有人想知道,它们列在 32000-1 中)。具体来说,我想将每个目的地更改为GoTo 类型并指定我自己的坐标。我希望左坐标与要跳转的页面的页面高度相同。为此,我显然需要页码。如何获得?
到目前为止我做了什么?
指令 PdfArray d = annotation.getAsArray(PdfName.DEST) 给 su 一个数组,其中它的第一个(基于 0 的)元素是页面引用,而不是像 Bruno Lowagie 在他的 iText in Action, 2nd edition, p. 202). The array looks like this:[1931 0 R, /XYZ, 0, 677, 0]` 中解释的页码。我找不到正确的命令来自己获取页码,因此这篇文章。
【问题讨论】:
-
menteith,您能否使用安东回答中的信息确定页码?或者您对更多示例代码感兴趣?还是您认为您的问题没有以另一种方式得到解答?
-
今天我将检查Anton的建议并编写一些处理页码的代码。完成后我会回复你。
-
@mkl 使用调试器我很容易找到带有引用的 ar 数组 (see),但我不知道如何使用 iText API 获取它。我检查了 Anton 提供的链接,但我发现很难理解应该做什么。
-
我添加了一些特定代码的答案。
-
你的意思是在标题中说“get a get”吗?