Baru saja menemukan pointer yang dapat digunakan ghostscript
untuk ini, di sini: pdftk - Tambahkan dan edit bookmark ke pdf - Unix dan Linux - Stack Exchange # 18600 ; mengacu pada tautan:
Namun, kesepakatan di atas dengan bookmark - tidak dengan pagination logis Ternyata dari pdfmarkReference.pdf , "perintah" yang dibutuhkan adalah ' /Label
' (atau ' /PAGELABEL
') - dan selanjutnya merujuk ke PDFReference.pdf bab 8.3.1 "Label Halaman". Sayangnya, bab itu tidak perlu menjelaskan bagaimana pdfmarks dapat digunakan dengan label halaman - tetapi posting ini tidak:
Pdfmark / PAGELABEL tidak memiliki kunci / Halaman, jadi orang dapat mengatur label hanya untuk halaman 'saat ini' (dan, sebagai konsekuensinya, hanya untuk satu halaman pada suatu waktu). Karena Anda menyebutnya di awal, itu diharapkan untuk menetapkan label untuk halaman 1 dan hanya untuk itu.
Banyak / PAGELABEL untuk halaman yang sama: referensi pdfmark mengatakan yang terakhir berlaku, sehingga hasil dari commandline 1 Anda OK. Perhatikan tombol / Halaman diabaikan.
Bagaimana cara mengatur label halaman dari PostScript? Saya dapat memikirkan 2 metode:
(A) Cara didokumentasikan 100%:
Keluarkan a / PAGELABEL sebagai bagian dari setiap halaman.
(B) Cara yang kurang terdokumentasi: ...
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
... dan selanjutnya di utas itu:
Seperti untuk membuat pekerjaan ini; karena file asli adalah file PDF, Anda dapat menjalankan setiap halaman dari file satu per satu. Jadi Anda dapat mengatur pAGELABEL pdfmark untuk halaman 1, jalankan halaman 1 dari file asli, atur PAGELABEL untuk halaman 2, jalankan halaman 2 dari file asli dan seterusnya.
Karena label (seperti SaGS) dikatakan berlaku untuk halaman saat ini, ini harus dengan benar mengatur label untuk setiap halaman dalam file PDF output. (peringatan: Saya belum benar-benar mencoba ini)
EDIT: hanya untuk menunjukkan ini - jika Anda menyimpan ini sebagai pdfmarks
file:
[ /Label (-1) /PAGELABEL pdfmark
showpage
[ /Label (0) /PAGELABEL pdfmark
showpage
[ /Label (1) /PAGELABEL pdfmark
showpage
... dan Anda menelepon:
gs -q -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=outfile.pdf infile.pdf pdfmarks
... maka Anda akan mendapatkan tiga halaman kosong ditambahkan di akhir infile.pdf
, berlabel -1, 0 dan 1 :)
Yah, mungkin ini membantu kadang-kadang untuk mendapatkan gs
skrip yang lebih sederhana untuk memberi nomor baru pada halaman :)
Ceria!
EDIT2: Mengerti, saya pikir - gunakan gs
perintah yang sama seperti di atas - dan di bawah ini adalah isi dari pdfmarks
skrip, yang akan memberi nomor baru infile.pdf, jadi itu dimulai dengan -1, 0, 1 ... Ini pada dasarnya adalah contoh modifikasi dari referensi PDF (lihat komentar untuk lebih lanjut):
% 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