Создание гиперссылки в PDF с помощью PostScript - PullRequest
3 голосов
/ 12 января 2011

В основном я пытаюсь добавить гиперссылку в 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

Ответы [ 2 ]

7 голосов
/ 13 января 2011

Вот предложение, которое вы не просили, но которое, тем не менее, может помочь вам достичь вашей цели: Используйте 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 (/3443580/sozdanie-giperssylki-v-pdf-s-pomoschy-postscript)>>" ^
  -c "  /Subtype /Link" ^
  -c "  /ANN pdfmark" ^
  -f without-hyperlink.pdf

Эта команда переустанавливает исходный PDF, без-гиперссылки.pdf , в с-гиперссылкой.pdf . Полученный PDF-файл будет иметь гиперссылку на странице 1.

Возможно, но слишком громоздко манипулировать содержимым PDF в текстовом редакторе. Но вы должны быть настоящим экспертом по PDF, чтобы сделать это для большинства PDF-файлов.

2 голосов
/ 12 января 2011

Эти десятизначные числа в конце являются индексом позиции байта в файле каждого объекта.Как минимум, если вы измените содержимое PDF, вам нужно будет исправить этот индекс.

Ссылку на структуру документа PDF можно скачать с Abdobe: http://www.adobe.com/devnet/pdf/pdf_reference.html

...