gpt4 book ai didi

pdf - 重命名 PDF 文件中的命名目标

转载 作者:行者123 更新时间:2023-12-04 13:39:35 25 4
gpt4 key购买 nike

我一直在使用 PDF 文件中的命名目标在文件中的特定位置打开 PDF 文件。负责生成 PDF 文档的团队使用一种工具从书签自动生成命名目标,因此命名目标往往具有类似 *9_Glossary* 或 *Additional_Information* 的名称。我们被要求以多种语言制作相同的文档。我希望我们将获得多种外语的 PDF 文档,并在相同位置带有书签,但书签的名称当然会使用这些其他语言,并且自动生成的命名目的地也将使用外语。我希望所有文档中的命名目的地都相同。

我不是第一个遇到这个问题的人,所以我很想看看其他人是否处理过这个问题。

一个想法可能是重命名外文文件中的目的地。我使用 iSharpText 来提取命名目的地列表。 iSharpText 是否可以重命名目的地?理想情况下,我有一个工具,我的翻译人员可以使用它来匹配每种语言的指定目的地名称,然后让该工具替换指定的目的地名称。

另一个想法是维护一个实时翻译的数据库;翻译器仍然需要匹配指定的目的地名称,但它们存储在数据库中。命令 Adob​​e Reader 打开的程序会使用英文版本查找外文名称,然后使用它打开文档。

我也对可能使这个问题更容易解决的 PDF 创作工具的建议感兴趣。

最佳答案

请看例子RenameDestinations .它所做的比您需要的要多,因为原始文档本身包含指向指定目标的链接,为了让这些目标继续工作,我们需要更改引用我们已更改的名称的操作。

这是与您相关的部分:

PdfDictionary catalog = reader.getCatalog();
PdfDictionary names = catalog.getAsDict(PdfName.NAMES);
PdfDictionary dests = names.getAsDict(PdfName.DESTS);
PdfArray name = dests.getAsArray(PdfName.NAMES);
for (int i = 0; i < name.size(); i += 2) {
PdfString original = name.getAsString(i);
PdfString newName = new PdfString("new" + original.toString());
name.set(i, newName);
}

首先你得到根字典(或目录)。您获得 /Names 字典,寻找命名目的地 (/Dests)。在我的例子中,我有一个简单的数组,其中包含成对的 PdfString 和对 PdfArray 值的引用。我用新名称替换了所有字符串值。

我正在改变的结构是一个名字树,它通常不是线性的。在您的 PDF 中,这棵树可以有分支,因此您可能想要编写一个递归方法来遍历这些分支。我没有时间写一个更详细的例子,也不想抢你的饭碗。此示例应该对您有所帮助。

请注意,我在名为 renamedMap 中跟踪原始名称和新名称。我使用此 map 更改第一页上链接注释的目的地。

关于pdf - 重命名 PDF 文件中的命名目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20131610/

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