简洁版本:
- 有什么方法可以使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.docx
和doc2.docx
(均使用MS Word 2007编译)。
在其中doc1.docx
放置指向第二个文档(doc2.pdf
)的PDF版本的超链接-现在,我得到了:
然后,我将doc1.docx
文件另存为.docx
和.pdf
- 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
使用file
URI方案进行解析:file:///C:/superuser/doc2.pdf
-这对我来说似乎很公平(将相同的URI粘贴到Run
Windows 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 / Adobe / 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)
... Adobe 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”-但是,如果您设法到达这里,我将非常感谢您的关注,并希望您或其他人可以向我指出正确的方向。
谢谢。