È abbastanza facile inserire i nomi dei file in un elenco di segnalibri che possono essere visualizzati da molti visualizzatori PDF.
Questo è fatto con PostScript utilizzando l'operatore di distiller 'pdfmark'. Ad esempio, utilizzare il seguente
gs -sDEVICE=pdfwrite -o finished.pdf control.ps
dove control.ps contiene i comandi di PS per stampare le pagine e in uscita il segnalibro (/ OUT) pdfmarks:
(examples/tiger.eps) run [ /Page 1 /Title (tiger.eps) /OUT pdfmark
(examples/colorcir.ps) run [ /Page 2 /Title (colorcir.ps) /OUT pdfmark
Si noti che è anche possibile eseguire l'enumerazione utilizzando PS per automatizzare l'intero processo:
/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 che l'ordine di filenameforall enumerazione non è specificato, quindi si consiglia di ordinare l'elenco di con trol l'ordine, usando l'estensione Ghostscript .sort (array lt .sort lt).
Anche dopo aver riflettuto su questo, ho anche capito che se un file di imput ha più di una pagina, c'è un modo migliore per impostare il segnalibro sul numero di pagina corretto usando la proprietà del dispositivo '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
È possibile che questo crea un array di stringhe (copiandoli oggetti stringa univoca dal filenameforall solo sovrascrive la stringa è data), quindi ordina di esso, e, infine, elabora la matrice di stringhe usando l'operatore forall. Utilizzando la proprietà del dispositivo PageCount per ottenere il conteggio delle pagine già prodotte, il numero di pagina (PN) per il segnalibro sarà corretto. Ho testato questo frammento come "control.ps".
sceneggiatura Il Python qui sembra promettente: http://blog.tremily.us/posts/PDF_bookmarks_with_Ghostscript/ – Geremia