基本上我正在尝试通过修改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
答案 0 :(得分:7)
以下是您未提出要求的建议,但可能会帮助您实现目标: 使用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 (http://stackoverflow.com/questions/4663409/creating-a-pdf-hyperlink-with-postscript/4674664#4674664)>>" ^
-c " /Subtype /Link" ^
-c " /ANN pdfmark" ^
-f without-hyperlink.pdf
此命令将原始PDF without-hyperlink.pdf 重新提取到 with-hyperlink.pdf 中。生成的PDF将在第1页上显示超链接。
在文本编辑器中操作PDF的内容是可能的,但是太麻烦了。但是你需要成为一名真正的PDF专家才能为大多数PDF做到这一点。
答案 1 :(得分:2)
末尾的十位数字是每个对象文件中字节位置的索引。至少,如果您更改PDF的内容,则需要更正该索引。
可以从Abdobe下载对PDF文档结构的引用: http://www.adobe.com/devnet/pdf/pdf_reference.html