当前位置: 首页 > 知识库问答 >
问题:

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

苏翰学
2023-03-14

我一直在使用PDF文件中的命名目标来打开文件中特定位置的PDF文件。负责生成PDF文档的团队使用工具从图书标记自动生成命名目的地,因此命名目的地的名称往往类似于*9\u Glossary*或*Additional\u Information*。我们被要求用多种语言制作相同的文档。我预计我们将收到多种外语的PDF文档,在相同的位置带有书签,但图书标记的名称当然将使用这些其他语言,自动生成的命名目的地将使用外语。我希望所有文件中指定的目的地是相同的。

我不可能是第一个遇到这个问题的人,所以我有兴趣看看其他人是否已经处理了这个问题。

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

另一个想法是维护一个实时执行翻译的数据库;翻译程序仍然必须匹配指定的目标名称,但它们存储在数据库中。命令Adobe Reader打开的程序将使用英文版本查找外语名称,然后使用该名称打开文档。

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

共有2个答案

亢嘉茂
2023-03-14

我迟到了,哈哈,但这可能对其他从谷歌搜索中点击这条线索的人有好处。

我建议找Autobookmark专业人士,它为书签、链接和命名目的地提供了很多工具。

导出要容易得多,然后使用文本编辑器更改名称,然后重新导入。

请记住,如果指定的目的地连接到链接,则必须重置这些链接,因为它们不会自动更新。

齐兴运
2023-03-14

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

这是与您相关的部分:

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字典,寻找命名的目的地(/Dest)。在我的例子中,我有一个简单的数组,其中包含成对的PdfString和对PdfArray值的引用。我用新名称替换所有字符串值。

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

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

 类似资料:
  • 文件重命名 文件重命名 源码/* * Copyright (c) 2006-2018, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * *//* * 程序清单:更改名称 * * 程序会创建一个操作文件的函数并导出到msh命令列表 * 在

  • 问题内容: 有没有一种简单的方法可以使用Python重命名目录中已包含的一组文件? 示例: 我有一个充满* .doc文件的目录,我想以一致的方式重命名它们。 X.doc->“ new(X).doc” Y.doc->“ new(Y).doc” 问题答案: 这样的重命名非常容易,例如使用os和glob模块: 然后可以在示例中使用它,如下所示: 上面的示例会将dir中的所有文件都转换为,其中是文件的先前

  • 前面小节介绍了文件和目录的创建、移动、删除、打包、压缩,本小节介绍如何对已有的文件或者重命名,好的文件命名规范将提升对文件和目录管理的效率。 1. 使用 mv 命令对文件名称 这里还是以 /home 目录的 alltxt.tar 文件为例,可以使用 mv 命令对其重命名: ls mv alltxt.tar newtxt.tar ls 执行结果如下图: 如上图所示相当于文件移动路径没变,名称变

  • 问题内容: 我有这样的事情: 我想将这些文件重命名为以下形式: 在同一目录中。 我想我可以使用,但是我不知道如何在文件夹和文件重命名的同时使用它。 问题答案: 可以使用bash for loop和: 请注意,如果目录名称包含空格,则上述解决方案将不起作用。相关链接。 另一种基于注释的解决方案(也适用于名称中也包含空格的目录):

  • 问题内容: 我正在尝试使用Python重命名目录中的某些文件。 假设我有一个名为的文件,并且想要删除,所以我得到的文件名将是 我正在尝试使用,但无法正常工作。我也考虑过使用字符串操作,但也没有成功。 问题答案: 使用重命名或移动文件或目录。

  • 问题内容: 我想批量重命名目录中的多个文件,以便从文件名中删除前面的数字和连字符。 如何使用linux命令执行此操作? 问题答案: 这应该使它: 它从块的开头(即数字)开始多次,然后连字符并将其从文件名中删除。 如果不在您的计算机中,则可以使用循环和: 测试 要么: