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


9

简洁版本:

  • 有什么方法可以使MS Word 2007(或更新版本)使用Action Type Launch而不是URI(Adobe Portable Document Format的第653页上指定的两种类型)对相对文件超链接(指向另一个PDF文件的超链接)进行编码, PDF参考,版本1.7,第六版-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放置指向第二个文档(doc2.pdf)的PDF版本的超链接-现在,我得到了:

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

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

MS Word 2007 PDF发布属性

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

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

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

但是,事实并非如此。取而代之的是,Adobe Reader X使用默认浏览器(在我的情况下为Windows 7 x64上的Google Chrome v21 +)解析超链接,并且很明显,这就是问题所在。我希望Adobe Reader X(及其大多数前代产品)只是通过在Adobe Reader X的另一个实例中打开目标PDF来解决超链接(假设我未选中该Open cross-document links in same window选项)。使用我的(默认)PDF阅读器重复相同的场景;苏门答腊PDF可以正常工作-苏门答腊PDF在另一个窗口中打开目标PDF文件,并向我显示其中的内容doc2.pdf。那么,为什么不使用Sumatra PDF呢?我本来希望-但是问题是我正在一个可能有大量最终用户的项目中工作,而且我不能假设他们都使用Adobe Reader X以外的所有PDF阅读器-因此,没有其他解决方法弄清楚Adobe Reader X发生了什么。

所以到那里,我开始挖掘。

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

为了回答这个问题,我继续挖掘。打开doc1.pdf记事本++透露,超链接已经使用编码的URI操作类型(见第在Adobe便携文档格式653和662,PDF参考,版本1.7,第六版- http://wwwimages.adobe.com/www.adobe .com / content / dam / Adob​​e / en / devnet / pdf / pdfs / pdf_reference_1-7.pdf):

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

PDF参考(第662页)陈述了有关URI操作类型的以下内容:

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

因此,乍一看似乎是Adobe Reader X中的主要错误,开始看起来像是一个公平的实现。至少在这一点上,我弄清楚了为什么Adobe Reader X会表现得如此—导致一个新的问题要回答:我如何正确编码文件超链接(例如的链接doc2.pdf),以使生成的PDF成为Adobe Reader X处理链接本身(而不是要求默认浏览器完成其工作)?

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

启动动作将启动应用程序或打开或打印文档。

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

更换:

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

有了这个:

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

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

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

我知道这可能会导致很多“ TLDR”-但是,如果您设法到达这里,我将非常感谢您的关注,并希望您或其他人可以向我指出正确的方向。

谢谢。


2
不确定注释是否使问题“浮肿”,但这值得一读。
Tanner Faulkner

1
感谢您的提问。它本身包含许多细节和一种可能的解决方案。您是否设法找到一种更好的方法?替换该动作效果很好。
Farish

1
@Farish不幸的是没有。到目前为止,使用后处理器一直是对我有效的解决方案。如果有一天我找到更好的方法,我将在此处发布更新:)
Lasse Christiansen 2014年

Answers:


2

感谢您的精彩文章。有用!起初不适合我,但是后来我发现您必须在Adobe X中关闭“保护模式”。我在Adobe 9上根本没有这个问题。安全名称。

因此,在Adobe Reader X中执行以下操作:

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

对于我们要执行的操作,没有简单的解决方案,即允许只有PDF阅读器且没有任何设置的任何用户都可以在文件夹中浏览。
但是,再次感谢您所做的所有工作以及它为主题带来的光彩。


我很高兴它可以使用“后处理器”的思想来工作。自从我发布问题以来,我仍然没有找到更好的解决方案,因此,我还将继续使用后处理步骤,直到找到更好的解决方案为止。感谢您的输入:)
Lasse Christiansen

0

FWIW,如果文件名包含空格,我认为链接在Sumatra中不起作用(由于在创建链接时Word似乎将其删除,因此在文件名两边加上引号没有帮助)。我不认为可以更改Word的行为,所以...

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

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


0

回覆。相对超链接问题。

MS Office帮助指出,设置“保存时更新链接”(Office按钮/ Word选项按钮/高级/ Web otions按钮)导致相对超链接的插入。如果未选中,则它们变为绝对。但是,此设置与我的尝试没有区别。所做的是保存文件的时间。为了建立相对链接,在插入任何链接之前,我打开一个新的空白文件并将其保存到适当的文件夹中。在“插入超链接”框中,选择“现有文件夹”。然后,框中显示的文件夹就是树形存储的向下(而不是向上)的文件夹。即相对

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

通过将光标悬停在两个Word文件中的链接上,可以在两种情况下显示完整的绝对路径。但是,如果将父文件夹复制到另一个驱动器,则相对链接将在新驱动器中打开该文件夹,而绝对链接将返回到C:驱动器文件夹,这是我想看到的。我尚未发现如何在一个文件中建立两种链接。但是我还是不需要这个。我可以使用上面的十六进制编辑修改将两个MS Word文件都转换为pdf,它们都可以工作,一个以绝对模式运行,另一个相对运行。

回覆。您的“十六进制编辑替换方法”

在某些情况下,对我来说效果很好,而在另一些情况下,效果不佳。我发现我必须确保目标文件名中没有空格。我用下划线符号代替了它们。然后他们工作了。


0

我现在已经尽可能为自己做到了这一点。由于它直接关系到原始问题,因此我将总结一下。

回覆。同一文档中的绝对链接和相对链接

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

创建可移动的索引链接文件夹的步骤

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

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

  2. 将子文件夹及其文件放置或放置到父文件夹中。

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

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

  5. 保存Word文件,该文件现在可以用作“索引文档”

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

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.