将 pdf 链接类型从 URI 更改为 GoToR

问题描述 投票:0回答:1

将文档从 Word 应用程序导出为 pdf 时,文档中的链接将导出为 URI(即 file://...../other_doc.pdf)。为了在其他地方验证它们,我需要链接为“转到远程”类型 - 根据 ISO 32000-1:2008 - https://opensource.adobe.com/dc-acrobat-sdk-docs/pdfstandards /PDF32000_2008.pdf Word文档生成的链接如下所示:

<</Subtype/Link/Rect[ 387.75 627.78 440.07 652.75] /BS<</W 0>>/F 4/A<</Type/Action/S/URI/URI(m1/m1-toc.pdf) >>/StructParent 1>>

我需要它们符合上述标准中的12.6.4.3。然而,当我尝试将其更改为这样的东西时:

<</Subtype/Link/Rect[ 387.75 695.68 440.07 720.65] /BS<</W 0>>/F 4/A<</Type/Action/S/GoToR/F (m1/m1-toc.pdf)/D [ 0 /Fit] >>/StructParent 1>>

它可以在 Acrobat Reader 中正常打开,但验证器软件(顺便说一下 Lorenz eValidator)表示该文件已损坏。我尝试了多个空格/无空格与属性的组合 - 没有任何效果。这是 ISO 标准中为数不多的项目之一,没有我可以抄袭的示例。

如果您想要一些非技术背景,这都是 Nees 程序的一部分。这与药品注册有关,注册商使用洛伦兹,所以我无法更改这一点。

感谢您的任何见解。

pdf pdf-generation
1个回答
0
投票

您的 PDF 操作编码可能存在 3 个问题。

基本上是正确的。然而,验证者可能非常迂腐,没有解释原因。因此,如果您考虑可能需要哪些差异,我们可以尝试这样的变体,其中您的编码尝试是

5 0 obj
,而可能需要的是
6 0 obj

这里我将对象 5 标记为关闭(假),但 6 标记为正常。您可以使用它进行合规性测试。

%PDF-1.7
1 0 obj<</Pages 2 0 R/Type/Catalog>>endobj
2 0 obj<</Count 1/Kids[3 0 R]/Type/Pages>>endobj
3 0 obj<</Annots[5 0 R 6 0 R]/Contents 4 0 R/MediaBox[0 0 595 842]/Parent 2 0 R/Resources<<>>/Type/Page>>endobj
4 0 obj<</Length 0>>stream
endstream
endobj
5 0 obj<</Subtype/Link/Rect[387.75 695.68 440.07 720.65]/BS<</W 0>>/F 4/A<</Type/Action/S/GoToR/F(m1/m1-toc.pdf)/D [ 0 /Fit]>>/StructParent 1>>endobj
6 0 obj<</Subtype/Link/Rect[387.75 627.78 440.07 652.75]/BS<</W 0>>/F 4/P 3 0 R/A<</S/GoToR/F<</Type/Filespec/UF(m1/m1-toc.pdf)/F(m1/m1-toc.pdf)>>/D[0/Fit]>>/StructParent 1>>
endobj

xref
0 7
0000000001 65536 f 
0000000009 00000 n 
0000000052 00000 n 
0000000101 00000 n 
0000000213 00000 n 
0000000257 00000 f 
0000000407 00000 n 

trailer
<</Size 7/Root 1 0 R/ID[<44C21B401904A6800FA7ED30CE3BD912><BC2D3D1187A744B759304A4C122094FE>]>>
startxref
590
%%EOF

有什么区别以及为什么?

  • /P 3 0 R
    是返回/父页面的链接
  • /Type/Action
    不需要,但您需要仔细检查验证器是否需要它!
  • 对于 1.7+ 版本的 PDF 最具体的是 /F 应该是双
    /Filespec
    条目!
    /F<</Type/Filespec/UF(m1/m1-toc.pdf)/F(m1/m1-toc.pdf)>>
    请参阅 Adobe 规范副本中的第 7.11.3 节。

正如评论中提到的,运行时十进制 XREF 地址都需要检查,只需使用“-clean”命令保存文件,或者简单地使用 Acrobat Reader“另存为”也可以在关闭文件时修复这些问题。

最后,“验证器”可能不允许相对子文件夹文件,因为这需要访问不同的系统资源。最好在一个文件夹中使用同级文件,而不是像子代那样使用相对地址。

© www.soinside.com 2019 - 2024. All rights reserved.