使用PostScript创建PDF超链接

3
基本上,我正在尝试通过修改后的PostScript在PDF中添加超链接。
以下是Adobe提供的生成超链接的PostScript代码: [ /Rect [ 0 425 295 445 ] /Action << /Subtype /URI /URI (http://www.adobe.com/) >> /Border [ 0 0 2 ] /Color [ .7 0 0 ] /Subtype /Link ANN pdfmark]
以下是我要修改的代码示例:
%PDF-1.4 %âãÏÓ 6 0 obj >stream 1 w [] 0 d 0.0 g 36 775 m 576 775 l s endstream endobj 7 0 obj >stream BT 36 777 Td 0 Tr /F1 16 Tf 0.0 g (Test PDF) Tj ET endstream endobj 1 0 obj >>/ProcSet[/PDF]>>/Parent 8 0 R/MediaBox[0 0 612 792]/Contents[6 0 R 7 0 R]/Type/Page>> endobj
9 0 obj >>/ProcSet[/PDF]>>/Parent 8 0 R/MediaBox[0 0 612 792]/Contents[10 0 R 11 0 R]/Type/Page>> endobj 8 0 obj >> endobj 12 0 obj >> endobj 13 0 obj >> endobj xref 0 14 0000000000 65535 f 0000017066 00000 n 0000000015 00000 n 0000000116 00000 n 0000000212 00000 n 0000000319 00000 n 0000000422 00000 n 0000003831 00000 n 0000025138 00000 n 0000024976 00000 n 0000017226 00000 n 0000021450 00000 n 0000025207 00000 n 0000025253 00000 n trailer ]>>startxref 25381 %%EOF

1
你试图修改的并不是PostScript代码,而是PDF。(是的,你可以添加代码到PostScript中以便在生成的PDF中拥有超链接。关键词在于pdfmark...) - Kurt Pfeifle
3个回答

9

这里有一个建议,虽然你没有要求,但它可能有助于实现你的目标:使用Ghostscript将您的PDF转换并添加超链接。

以下是操作步骤。示例假设您使用Windows。在Linux或Mac OS X上,请使用gs(而不是gswin32c.exe),并使用\作为行继续符号,而不是^

gswin32c.exe ^
  -o with-hyperlink.pdf ^
  -sDEVICE=pdfwrite ^
  -c "[ /Rect [0 425 295 465]" ^
  -c "  /Border [0 0 2]" ^
  -c "  /Color [.7 0 0]" ^
  -c "  /Page 1" ^
  -c "  /Action <</Subtype /URI" ^
  -c "  /URI (https://dev59.com/dVPTa4cB1Zd3GeqPiE9U#4674664)>>" ^
  -c "  /Subtype /Link" ^
  -c "  /ANN pdfmark" ^
  -f without-hyperlink.pdf

这个命令将原始PDF文件without-hyperlink.pdf重新转换为with-hyperlink.pdf,生成的PDF文件第一页会有超链接。
在文本编辑器中操作PDF内容非常麻烦,大多数PDF文件需要真正的PDF专家才能完成。

2
这段话的意思是:“文件结尾处的那些十位数字是每个对象在文件内的字节位置索引。如果你修改了PDF文件的内容,至少需要修正这个索引。有关PDF文件结构的参考资料可以从Adobe下载:http://www.adobe.com/devnet/pdf/pdf_reference.html。”

2
答案可以在Kurt Pfeifle给出的提示中找到。对于URL,'pdfmark'功能似乎是PostScript的一种现代能力,如果使用适当的转换器将PS转换为PDF,则可以包含活动链接。请参阅Adobe文档:https://opensource.adobe.com/dc-acrobat-sdk-docs/acrobatsdk/pdfs/acrobatsdk_pdfmark.pdf。我认为当前的'ps2pdf'命令应该能够处理它,并且在我检查我的Debian主机后会报告我的结果。

1
OP特别提到了修改PostScript代码,而该方法在我引用的文档中完全描述。由于我主要依赖ps2pdf和《红皮书》已经超过25年了,直到最近我才意识到那个文档的存在。我很高兴找到它,因为我正在通过PostScript构建PDF幻灯片制作器,而链接是我唯一缺少的东西,以满足我的需求。 - tbrowder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接