Ho appena trovato un puntatore che potrebbe essere possibile utilizzare ghostscript
per questo, qui: pdftk - Aggiungi e modifica i segnalibri in pdf - Unix e Linux - Stack Exchange # 18600 ; si riferisce ai collegamenti:
Tuttavia, quanto sopra riguarda i segnalibri, non l'impaginazione logica. Risulta da pdfmarkReference.pdf , il "comando" necessario è ' /Label
' (o ' /PAGELABEL
') - e fa inoltre riferimento al capitolo 8.3.1 "Etichette di pagina" di PDFReference.pdf . Sfortunatamente, quel capitolo non spiega necessariamente come usare i pdfmarks con le etichette delle pagine - ma questo post fa:
Il pdfmark / PAGELABEL non ha alcun tasto / Page, quindi è possibile impostare l'etichetta solo per la pagina 'corrente' (e, di conseguenza, solo per una pagina alla volta). Dal momento che lo chiami all'inizio, si prevede di impostare un'etichetta per la prima pagina e solo per essa.
Più / PAGELABEL per la stessa pagina: il riferimento pdfmark indica che l'ultimo ha effetto, quindi il risultato della tua prima riga di comando è OK. Nota il tasto / Pagina viene ignorato.
Come impostare le etichette delle pagine da PostScript? Posso pensare a 2 metodi:
(A) Il modo documentato al 100%:
Emettere un / PAGELABEL come parte di ogni pagina.
(B) Il modo meno documentato: ...
gswin32c -sDEVICE=pdfwrite -sOutputFile=50pages.pdf -dNOPAUSE
GS>[/_objdef {pl} /type /dict /OBJ pdfmark
GS>[{pl} <</Nums [0 <</P (Page ) /S /r /St 10>> 2 <<>>]>> /PUT pdfmark
GS>[{Catalog} <</PageLabels {pl}>> /PUT pdfmark
GS>50 { showpage } repeat
GS>quit
... e oltre in quella discussione:
Quanto a farlo funzionare; poiché il file originale è un file PDF, è possibile eseguire ogni pagina dal file singolarmente. Quindi è possibile impostare il PAGELABEL pdfmark per la pagina 1, eseguire la pagina 1 dal file originale, impostare PAGELABEL per la pagina 2, eseguire la pagina 2 dal file originale e così via.
Poiché l'etichetta è (come SaGS) detta applicata alla pagina corrente, questo dovrebbe impostare correttamente le etichette per ogni pagina nel file PDF di output. (avvertenza: non l'ho ancora provato)
EDIT: solo per mostrarlo - se lo hai salvato come pdfmarks
file:
[ /Label (-1) /PAGELABEL pdfmark
showpage
[ /Label (0) /PAGELABEL pdfmark
showpage
[ /Label (1) /PAGELABEL pdfmark
showpage
... e chiami:
gs -q -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=outfile.pdf infile.pdf pdfmarks
... alla fine di tre pagine vuote verranno aggiunte, con l' infile.pdf
etichetta -1, 0 e 1 :)
Bene, forse questo può aiutare qualche volta a ottenere uno gs
script più semplice per rinumerare le pagine :)
Saluti!
EDIT2: Capito, penso - usa lo stesso gs
comando sopra - e sotto sono i contenuti dello pdfmarks
script, che rinumererà infile.pdf, quindi inizia con -1, 0, 1 ... È sostanzialmente un esempio modificato da il riferimento PDF (vedi commenti per ulteriori informazioni):
% Type name (Optional) The type of PDF object that this dictionary describes; if present, must be PageLabel for a page label dictionary.
% S name (Optional) The numbering style to be used for the numeric portion of each page label:
% D Decimal arabic numerals
% R Uppercase roman numerals
% r Lowercase roman numerals
% A Uppercase letters (A to Z for the first 26 pages, AA to ZZ for the next 26, and so on)
% a Lowercase letters (a to z for the first 26 pages, aa to zz for the next 26, and so on)
% P text string (Optional) The label prefix for page labels in this range.
% St integer (Optional) The value of the numeric portion for the first page label in the range. Subsequent pages will be numbered sequentially from this value, which must be greater than or equal to 1. Default value: 1.
% renumber first 25 pages - push each by 10, and add prefix:
% [/_objdef {pl} /type /dict /OBJ pdfmark
% [{pl} <</Nums [0 <</P (Page ) /S /D /St 10>> 25 <<>>]>> /PUT pdfmark
% [{Catalog} <</PageLabels {pl}>> /PUT pdfmark
[/_objdef {pl} /type /dict /OBJ pdfmark
[{pl} <</Nums [ 0 << /P (-1) >> % just label -1 (no style) for pg 0;
1 << /P (0) >> % just label 0 (no style) for pg 1;
2 << /S /D /St 1 >> % decimal style, start from 1, for pg2 and on.
]>> /PUT pdfmark
[{Catalog} <</PageLabels {pl}>> /PUT pdfmark