เพิ่งพบตัวชี้ว่ามันเป็นไปได้ที่จะใช้ghostscript
สิ่งนี้ที่นี่: pdftk - เพิ่มและแก้ไขที่คั่นหน้าเป็น pdf - Unix และ Linux - Stack Exchange # 18600 ; มันหมายถึงลิงก์:
อย่างไรก็ตามข้อตกลงข้างต้นกับบุ๊กมาร์ก - ไม่ใช่ด้วยการแบ่งหน้าแบบลอจิคัล ปรากฎจากpdfmarkReference.pdfคำสั่ง "ที่ต้องการ" คือ ' /Label
' (หรือ ' /PAGELABEL
') - และมันยังอ้างถึงPDFReference.pdfบทที่ 8.3.1 "ฉลากหน้า" น่าเสียดายที่บทนั้นไม่ได้อธิบายอย่างชัดเจนว่าจะใช้ pdfmarks กับป้ายกำกับหน้าได้อย่างไร แต่บทความนี้ทำ:
เครื่องหมาย / PAGELABEL pdf ไม่มีคีย์ / หน้าใด ๆ ดังนั้นจึงสามารถตั้งค่าป้ายกำกับสำหรับหน้า 'ปัจจุบัน' เท่านั้น (และเป็นผลเฉพาะสำหรับครั้งละหนึ่งหน้า) เมื่อคุณเรียกมันว่าตอนเริ่มต้นก็คาดว่าจะตั้งป้ายกำกับสำหรับหน้า 1 และเฉพาะสำหรับมัน
หลาย / PAGELABELs สำหรับหน้าเดียวกัน: การอ้างอิง pdfmark บอกว่าหน้าสุดท้ายจะมีผลดังนั้นผลลัพธ์ของ commandline ที่ 1 ของคุณก็โอเค หมายเหตุคีย์ / หน้าจะถูกละเว้น
วิธีการตั้งป้ายกำกับหน้าจาก PostScript? ฉันคิดได้ 2 วิธี:
(A) วิธีเอกสาร 100%:
ออก / PAGELABEL เป็นส่วนหนึ่งของแต่ละหน้า
(B) วิธีที่มีเอกสารน้อยกว่า: ...
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
... และเพิ่มเติมในหัวข้อนั้น:
ในการทำให้งานนี้; เนื่องจากไฟล์ต้นฉบับเป็นไฟล์ PDF คุณสามารถเรียกใช้แต่ละหน้าจากไฟล์แยกกัน ดังนั้นคุณสามารถตั้งค่า PAGELABEL pdfmark สำหรับหน้า 1 เรียกใช้หน้า 1 จากไฟล์ต้นฉบับตั้ง PAGELABEL สำหรับหน้า 2 เรียกใช้หน้า 2 จากไฟล์ต้นฉบับและอื่น ๆ
เนื่องจากฉลากคือ (ตามที่ SaGS) กล่าวว่านำไปใช้กับหน้าปัจจุบันสิ่งนี้ควรตั้งค่าฉลากสำหรับแต่ละหน้าในไฟล์ PDF ผลลัพธ์อย่างถูกต้อง (ข้อแม้: ฉันไม่ได้ลองสิ่งนี้จริง ๆ )
แก้ไข: เพียงเพื่อแสดงสิ่งนี้ - ถ้าคุณบันทึกสิ่งนี้เป็นpdfmarks
ไฟล์:
[ /Label (-1) /PAGELABEL pdfmark
showpage
[ /Label (0) /PAGELABEL pdfmark
showpage
[ /Label (1) /PAGELABEL pdfmark
showpage
... และคุณโทรหา:
gs -q -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=outfile.pdf infile.pdf pdfmarks
... จากนั้นคุณจะได้รับสามหน้าต่อท้ายท้ายinfile.pdf
ข้อความ -1, 0 และ 1 :)
บางทีนี่อาจช่วยให้gs
สคริปต์ง่ายขึ้นสำหรับการกำหนดหมายเลขหน้าใหม่ :)
ไชโย!
แก้ไข 2: เข้าใจแล้วฉันคิดว่า - ใช้gs
คำสั่งเดียวกับด้านบน - และด้านล่างเป็นเนื้อหาของpdfmarks
สคริปต์ซึ่งจะกำหนดหมายเลข infile.pdf ใหม่ดังนั้นจึงเริ่มต้นด้วย -1, 0, 1 ... มันเป็นตัวอย่างที่ถูกแก้ไขจาก การอ้างอิง PDF (ดูความคิดเห็นเพิ่มเติม):
% 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