Jest dość łatwo umieścić nazwy plików na liście zakładek, które mogą wyświetlać przeglądarki PDF.
Odbywa się to za pomocą PostScriptu przy użyciu operatora destylatora "pdfmark". Na przykład można użyć następujących
gs -sDEVICE=pdfwrite -o finished.pdf control.ps
gdzie control.ps zawiera komendy PS, aby wydrukować strony i wyjście zakładka (/ Out) pdfmarks:
(examples/tiger.eps) run [ /Page 1 /Title (tiger.eps) /OUT pdfmark
(examples/colorcir.ps) run [ /Page 2 /Title (colorcir.ps) /OUT pdfmark
pamiętać, że można również wykonać za pomocą wyliczenie PS zautomatyzować cały proces:
/PN 1 def
(file*.pdf) {
/FN exch def
FN run
[ /Page PN /Title FN /OUT pdfmark % do the file and bookmark it by filename
/PN PN 1 add def % bump the page number
} 1000 string filenameforall
NB że kolejność filenameforall wyliczenie nie jest określona, więc może chcesz, aby posortować listę con pilnuj porządku, używając rozszerzenia Ghostscript .sort (array lt .sort lt).
Również po przemyśleniu tego, zdałem sobie również sprawę, że jeśli plik imput ma więcej niż jedną stronę, istnieje lepszy sposób na ustawienie zakładki na prawidłowy numer strony za pomocą właściwości urządzenia "PageCount".
[
(file*.pdf) { dup length string copy } 1000 string filenameforall
] % create array of filenames
{ lt } .sort % sort in increasing alphabetic order
/PN 1 def
{ /FN exch def
/PN currentpagedevice /PageCount get 1 add def % get current page count done (next is one greater)
FN run [ /Page PN /Title FN /OUT pdfmark % do the file and bookmark it by filename
} forall
Powyższy tworzy tablicę ciągów (kopiowanie ich do unikalnych przedmiotów łańcuchowych filenameforall prostu nadpisuje ciąg jest podany), a następnie sortuje je i wreszcie przetwarza tablicę ciągów pomocą operatora forall. Korzystając z właściwości urządzenia PageCount, aby uzyskać liczbę już wyprodukowanych stron, numer strony (PN) zakładki będzie prawidłowy. Przetestowałem ten fragment jako "control.ps".
pytona skryptu tutaj wydaje się obiecujące: http://blog.tremily.us/posts/PDF_bookmarks_with_Ghostscript/ – Geremia