Habe gerade einen Zeiger gefunden, den es dafür geben könnte ghostscript
, hier:Habe pdftk - Lesezeichen zu pdf hinzufügen und bearbeiten - Unix und Linux - Stack Exchange # 18600 ; es bezieht sich auf links:
Die obigen Ausführungen befassen sich jedoch mit Lesezeichen - nicht mit logischer Paginierung. Es ergibt sich aus pdfmarkReference.pdf , der erforderliche "Befehl" ist ' /Label
' (oder ' /PAGELABEL
') - und es wird weiter auf PDFReference.pdf, Kapitel 8.3.1 "Seitenbeschriftungen" verwiesen. Leider wird in diesem Kapitel nicht unbedingt erklärt, wie PDF-Markierungen mit Seitenbeschriftungen verwendet werden können.
Das / PAGELABEL-PDF-Kennzeichen hat keinen / Page-Schlüssel, daher kann das Kennzeichen nur für die 'aktuelle' Seite (und folglich nur für jeweils eine Seite) festgelegt werden. Da Sie es von Anfang an aufrufen, wird erwartet, dass für die erste Seite und nur für diese eine Bezeichnung festgelegt wird.
Mehrere / PAGELABELs für dieselbe Seite: Die pdfmark-Referenz besagt, dass die letzte wirksam wird, sodass das Ergebnis Ihrer ersten Befehlszeile in Ordnung ist. Beachten Sie, dass die Taste / Page ignoriert wird.
Wie werden Seitenbeschriftungen in PostScript festgelegt? Ich kann mir 2 Methoden vorstellen:
(A) Der 100% dokumentierte Weg:
Stellen Sie auf jeder Seite ein / PAGELABEL aus.
(B) Der weniger dokumentierte Weg: ...
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
... und weiter in diesem Thread:
Um diese Arbeit zu machen; Da es sich bei der Originaldatei um eine PDF-Datei handelt, können Sie jede Seite einzeln aus der Datei ausführen. Sie können also das PAGELABEL-PDF-Kennzeichen für Seite 1 festlegen, Seite 1 in der Originaldatei ausführen, das PAGELABEL für Seite 2 festlegen, Seite 2 in der Originaldatei ausführen usw.
Da die Beschriftung (wie in SaGS angegeben) auf die aktuelle Seite angewendet wird, sollte dies die Beschriftungen für jede Seite in der PDF-Ausgabedatei korrekt festlegen. (Einschränkung: Ich habe das noch nicht ausprobiert)
BEARBEITEN: nur um dies zu zeigen - wenn Sie dies als pdfmarks
Datei gespeichert haben:
[ /Label (-1) /PAGELABEL pdfmark
showpage
[ /Label (0) /PAGELABEL pdfmark
showpage
[ /Label (1) /PAGELABEL pdfmark
showpage
... und du rufst an:
gs -q -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=outfile.pdf infile.pdf pdfmarks
... dann werden am Ende drei leere Seiten mit den infile.pdf
Bezeichnungen -1, 0 und 1 angehängt :)
Naja, vielleicht hilft das irgendwann, ein einfacheres gs
Skript zum Umnummerieren von Seiten zu finden :)
Prost!
EDIT2: Verstanden, ich denke - benutze den gleichen gs
Befehl wie oben - und unten ist der Inhalt des pdfmarks
Skripts, das die infile.pdf neu nummeriert, also beginnt es mit -1, 0, 1 ... Es ist im Grunde ein modifiziertes Beispiel von die PDF-Referenz (siehe Kommentare für mehr):
% 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