MS Word 2007+ - 将“.docx”文件发布为 PDF 时,它可以使用 PDF 操作类型“启动”而不是“URI”来编码超链接吗?

MS Word 2007+ - 将“.docx”文件发布为 PDF 时,它可以使用 PDF 操作类型“启动”而不是“URI”来编码超链接吗?

简洁版本:

  • 有什么方法可以让 MS Word 2007(或更新版本)使用操作类型Launch而不是URI(Adobe 便携式文档格式 PDF 参考第 1.7 版第 653 页上指定的两种类型)对相对文件超链接(指向另一个 PDF 文件的超链接)进行编码 -http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/pdf_reference_1-7.pdf)?或者唯一的解决方案是实现一个后处理器,它可以将所有“错误”URI编码的文件超链接更改为其Launch等效内容?

详细版本:

我有两个 Word 文档;doc1.docxdoc2.docx(均用 MS Word 2007 编译)。

doc1.docx在第二个文档的 PDF 版本中放置了一个超链接(doc2.pdf) - 所以现在我得到:

<code>doc1.docx</code> 中 <code>doc2.pdf</code> 超链接的属性

然后,我将doc1.docx文件另存为-生成由 MS Word 2007 中的内置 PDF 发布器使用以下选项处理:.docx.pdfPDF

MS Word 2007 PDF 发布属性

到目前为止一切顺利-我有以下文件夹结构:

/superuser
    - doc1.docx
    - doc1.pdf
    - doc2.docx
    - doc2.pdf

然后我doc1.pdf用 Adob​​e Reader X (版本 10.1.3) 打开并点击指向的超链接doc2.pdf。由于链接是相对的,我猜测/假设 Adob​​e Reader X 只会在单独的窗口或 Adob​​e Reader X 的同一个实例中打开目标 PDF 文件(取决于Open cross-document links in same window:中指定的选项Edit -> Preferences -> Documents)。

然而,这是不是相反,Adobe Reader X 使用默认浏览器(在我的情况下是 Windows 7 x64 上的 Google Chrome v21+)解析超链接 - 并且要清楚 -这就是问题。我希望 Adob​​e Reader X(及其大多数前身)通过在另一个 Adob​​e Reader X 实例中打开目标 PDF 来解析超链接(假设我已取消选中该Open cross-document links in same window选项)。使用我的(默认)PDF 阅读器重复相同的场景;Sumatra PDF 工作正常 - Sumatra PDF 在单独的窗口中打开目标 PDF 文件并向我显示内容doc2.pdf。那么你可能会问,为什么不使用 Sumatra PDF?我很乐意 - 然而,问题是我正在开展一个可能有很多最终用户的项目,我不能假设他们所有人都使用除 Adob​​e Reader X 之外的其他 PDF 阅读器 - 因此,没有其他方法可以弄清楚 Adob​​e Reader X 发生了什么。

为了到达那里,我开始挖掘。

首先,通过查看 Chrome 中的地址栏,可以看到 Adob​​e Reader X 尝试doc2.pdf使用fileURI 方案进行解析:file:///C:/superuser/doc2.pdf——这对我来说似乎是公平的(将相同的 URI 粘贴到RunWindows 7 中的对话框中会导致我的默认 PDF 阅读器(Sumatra PDF)打开该文件)——但为什么 Adob​​e Reader X 要求默认浏览器处理 PDF?

为了回答这个问题,我继续挖掘。doc1.pdf在 notepad++ 中打开后发现,超链接已使用URI操作类型进行编码(请参阅 Adob​​e 便携式文档格式 PDF 参考第 1.7 版第 653 页和 662 页 -http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/pdf_reference_1-7.pdf):

/Type/Action/S/URI/URI(doc2.pdf)

PDF 参考(第 662 页)对URI动作类型作出了如下规定:

统一资源标识符 (URI) 是一个字符串,用于标识(解析为)互联网上的资源(通常是超文本链接的目标文件,但也可以解析为查询或其他实体)。

因此,乍一看似乎是 Adob​​e Reader X 中的一个重大错误,但后来看起来却像是一个合理的实现。至少,此时我弄清楚了 Adob​​e Reader X 的行为方式,这又引出了一个新问题:如何正确编码文件超链接(例如指向 的链接doc2.pdf),以便生成的 PDF 让 Adob​​e Reader X 自己处理链接(而不是让默认浏览器执行其工作)?

为了回答这个问题,我再次查看了 PDF 规范并找到了动作类型Launch- 关于该类型,PDF 参考指出以下内容(第 659 页):

启动操作会启动应用程序或者打开或打印文档。

因此通过进行以下更改(使用 notepad++):

更换:

/Type/Action/S/URI/URI(doc2.pdf)

有了这个:

/Type/Action/S/Launch/F(doc2.pdf)

doc2.pdf... 然后,Adobe Reader X 通过在单独的窗口/另一个 Adob​​e Reader X 实例中打开文件来解析链接- 再次假设我取消选中该Open cross-document links in same window选项(万岁!!)。

现在到了我还没有解决的实际/最后一个问题 - 有什么方法可以让 MS Word 2007(或更新版本)使用操作类型而不是(LaunchAdobeURI便携式文档格式 PDF 参考第 1.7 版第 653 页上指定的两种类型)对相对文件超链接(指向例如另一个 PDF 文件的超链接)进行编码 -http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/pdf_reference_1-7.pdf)?或者唯一的解决方案是实施某种后处理器应用程序,将所有“错误”URI编码的文件超链接更改为其Launch等效内容?

我知道这可能会导致很多“TLDR” - 但如果您设法到达这里,我真的很感谢您的兴趣,我希望您或其他人可以为我指明正确的方向。

谢谢。

答案1

感谢您的精彩文章。它确实有效!起初对我来说不是这样,但后来我发现您必须关闭 Adob​​e X 中的“保护模式”。我在 Adob​​e 9 上根本没有遇到这个问题。在我看来,这个行业正在以安全的名义在功能上倒退。

因此在 Adob​​e Reader X 中执行以下操作:

  1. 确保打开跨文档..未选中。(正如你所说)
  2. 关闭保护模式:编辑»首选项»常规
  3. 使用合适的十六进制编辑器/Type/Action/S/URI/URI进行搜索和替换/Type/Action/S/Launch/F(

我们想要做的是让任何只使用 PDF 阅读器而无需进行任何设置的用户浏览文件夹,但对于这个问题,没有简单的解决方案。
但再次感谢您所做的所有工作以及它对这个问题的阐释。

答案2

无论如何,我认为如果文件名包含空格,链接在 Sumatra 中不起作用(在文件名两边加上引号也没用,因为 Word 在创建链接时似乎会删除这些空格)。我不认为可以改变 Word 的行为,所以...

解决方法#1:使用更好的 PDF 创建器。

解决方法 #2:照常使用 Word 创建 PDF,然后使用十六进制编辑器或命令行实用程序,例如http://stahlforce.com/dev/index.php?tool=rep替换所有必需的实例/类型/操作/S/URI/URI(/类型/动作/S/发射/F(

答案3

回复相对超链接问题。

MS Office 帮助指出,设置“保存时更新链接”(Office 按钮/Word 选项按钮/高级/Web 选项按钮)会导致插入的超链接为相对链接。如果未选中,则它们变为绝对链接。但是,此设置对我的尝试没有任何影响。真正起作用的是文件保存的时间点。为了建立相对链接,我打开一个新的空白文件并将其保存到适当的文件夹中,然后再插入任何链接。在“插入超链接框”中选择“现有文件夹”。框中显示的文件夹就是刚刚保存的文件夹,向下树状排列 - 而不是向上树状排列。即相对

为了建立绝对链接,我打开一个新的空白文件,不保存它,插入链接。插入框现在在顶层显示现有文件夹。向下钻取要链接到的文件,框底部显示的路径是返回 C: 的完整路径。... . . . . .(显示驱动器号),即绝对路径。

将光标悬停在两个 Word 文件中的链接上,在两种情况下都会显示完整的绝对路径。但是,如果将父文件夹复制到另一个驱动器,则相对链接会打开新驱动器中的文件夹,而绝对链接会返回到 C: 驱动器文件夹,这正是我想要看到的。我还没有发现如何在一个文件中创建两种链接。但我无论如何都不需要这个。我能够使用上面的十六进制编辑修改将我的两个 MS Word 文件转换为 pdf,并且它们都有效,一个是绝对模式,另一个是相对模式。

回复你的“十六进制编辑替换方法”

在某些情况下,它对我来说很有效,但在其他情况下则不然。我发现我必须确保目标文件名中没有空格。我用下划线符号替换它们。然后它们就起作用了。

答案4

我已经尽可能地弄清楚了这个问题。由于它与原始问题直接相关,因此我只会给出我的最终总结。

关于同一文档中的绝对链接和相对链接

查看插入超链接框底部显示的路径。如果顶层文件夹是您选择的文件夹,则链接将与其相关。要使其成为绝对链接,请使用“插入”框中的树结构向上钻取直至驱动器号。当文件首次保存到“父”文件夹时,默认为相对链接。

创建可传输索引链接文件夹的步骤

(使用“索引”文档链接到子文件夹中的文件。)

  1. 在某处创建一个新文件夹,作为要传输的文件夹(“父”文件夹)。

  2. 创建或将包含其文件的子文件夹放入父文件夹中。

  3. 现在打开一个 Word 2007 文档,它将是您的“索引文档”。在插入任何链接之前,请将此文件保存到您的“父级”中。

  4. 现在执行“插入超链接”。 “插入超链接”框将显示从“父级”向下(即相对)的文件夹/文件树结构。 要创建绝对链接,请一直向上钻取到驱动器号。

  5. 保存 Word 文件,它现在将作为您的“索引文档”

  6. 要将“索引文档”转换为 pdf,请打开 word 文件并另存为 PDF。此版本的索引文档将通过浏览器打开目标文件,下载它们或在浏览器中显示为 PDF。

  7. 要使“Index.pdf”文档在其本机应用程序中打开链接,请使用前面描述的十六进制编辑方法修改文件,并将 /Type/Action/S/URI/URI( 替换为 /Type/Action/S/Launch/F(

  8. 3.重要提示!在修改 .pdf 文件之前,请确保所有文件夹和文件名称中没有空格。用下划线或破折号代替空格。

相关内容