Sadece, bunun için kullanmanın mümkün olacağına dair bir işaretçi buldum ghostscript
: pdftk - pdf'ye yer imleri ekleme ve düzenleme - Unix ve Linux - Stack Exchange # 18600 ; bağlantıları ifade eder:
Bununla birlikte, yukarıdakiler yer imleriyle ilgilidir - mantıksal sayfalama ile değil. PdfmarkReference.pdf dosyasından çıkıyor , gerekli "komut" /Label
'(veya' /PAGELABEL
') - ve ayrıca PDFReference.pdf bölüm 8.3.1 "Sayfa Etiketleri" anlamına geliyor. Ne yazık ki, bu bölüm mutlaka pdfmark'ların sayfa etiketleriyle nasıl kullanılabileceğini açıklamamaktadır - ancak bu yayın şunları yapar:
/ PAGELABEL pdfmark’ında / Page tuşu yoktur, bu nedenle bir kişi yalnızca 'geçerli' sayfa için etiket ayarlayabilir (ve sonuç olarak bir seferde sadece bir sayfa için). En başından beri aradığınızdan, ilk sayfa için ve yalnızca bunun için bir etiket belirlemesi bekleniyor.
Aynı sayfa için birden fazla / PAGELABEL: pdfmark referansı, sonuncunun etkili olduğunu söylüyor, bu yüzden ilk komut satırınızın sonucu tamam. / Sayfa tuşunun dikkate alınmadığını unutmayın.
PostScript'ten sayfa etiketleri nasıl ayarlanır? 2 yöntem düşünebilirim:
(A)% 100 belgelenmiş yolu:
Her sayfanın bir parçası olarak / PAGELABEL yayın.
(B) Daha az belgelenmiş yol: ...
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
... ve daha sonra bu konuya:
Bu işi yapmak için; Orijinal dosya bir PDF dosyası olduğundan, her sayfayı dosyadan ayrı ayrı çalıştırabilirsiniz. Böylece sayfa 1 için PAGELABEL pdfmark'ı, orijinal dosyadan sayfa 1'i çalıştırabilir, sayfa 2 için PAGELABEL'i ayarlayabilir, orijinal dosyadan sayfa 2'yi çalıştırabilirsiniz.
Etiket (SaGS gibi) geçerli sayfaya uygulandığından dolayı, bu çıktı PDF dosyasındaki her sayfa için etiketleri doğru şekilde ayarlamalıdır. (ihmal: Aslında bunu denemedim)
EDIT: sadece bunu göstermek için - eğer bunu pdfmarks
dosya olarak kaydettiyseniz :
[ /Label (-1) /PAGELABEL pdfmark
showpage
[ /Label (0) /PAGELABEL pdfmark
showpage
[ /Label (1) /PAGELABEL pdfmark
showpage
... ve sen ara:
gs -q -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=outfile.pdf infile.pdf pdfmarks
... sonra, sonuna infile.pdf
-1, 0 ve 1 etiketli üç boş sayfa verilir :)
Peki, belki bu bazen gs
sayfaları yeniden numaralandırma için daha basit bir komut dosyası almak için yardımcı olur :)
Şerefe!
EDIT2: Anladım, bence - gs
yukarıdakiyle aynı komutu kullan - ve aşağıda pdfmarks
infile.pdf dosyasını yeniden sıralayacak olan betiğin içeriği var , yani -1, 0, 1 ile başlıyor ... Temel olarak değiştirilmiş bir örnek PDF referansı (daha fazla yorum için bakınız):
% 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