หมายเหตุ 1: คำตอบที่ยอมรับนั้นส่วนใหญ่ยังคงถูกต้อง แต่มีช่องว่างบางส่วน มันขาดไฟล์ PDF จำนวนมากที่ไม่สามารถแก้ไขเป็นข้อความได้โดยตรง แม้ว่าจะเป็นเช่นนั้นการแก้ไขดังกล่าวอาจทำให้ PDF เสียหายไม่สามารถอ่านได้ ทางออกหนึ่งที่สามารถใช้ได้กับทั้ง Unix และ Microsoft Windows คือqpdfซึ่งสามารถแปลไฟล์ PDF เป็น "QDF" ซึ่งเป็นรูปแบบที่สามารถแก้ไขข้อความซึ่งยังคงเป็นไฟล์ PDF ที่ถูกต้อง qpdf
แพคเกจมาพร้อมกับfix-qdf
ที่คำนวณชดเชยหลังจากที่ไฟล์ QDF ได้รับการแก้ไขเพื่อแก้ไขความเสียหายใด ๆ
หมายเหตุ 2: อึดอัดกับโปรแกรมแก้ไขข้อความ? ลองใช้โปรแกรมแก้ไข GUI เช่นjpdftweakก่อน บางครั้งโปรแกรมแก้ไขไฟล์ PDF GUI ก็ทำงานได้แล้ว อย่างไรก็ตามเมื่อพวกเขาล้มเหลวอย่างที่เคยเป็นมาสำหรับฉันคุณสามารถลองทางเลือกที่แข็งแกร่งกว่านี้ ไม่ว่าจะด้วยวิธีใดโปรดอย่าลงคะแนนสำหรับคำตอบของฉันเพราะสง่างาม
วิธีแก้ไขหมายเลขหน้า PDF โดยใช้ Qpdf
สรุป:
qpdf -qdf foo.pdf foo.qdf
แก้ไข foo.qdf
0 << >> % No label on first pages
6 << /S /D >> % Start numbering from 7th page.
fix-qdf foo.qdf >bar.qdf
- test bar.qdf
qpdf bar.qdf bar.pdf
ขั้นตอนโดยละเอียด
ขั้นตอนที่ 1.
แปลงเอกสารเป็นรูปแบบ QDF ที่แก้ไขได้ง่าย เรียกใช้ qpdf จากบรรทัดคำสั่งดังนี้:
qpdf -qdf foo.pdf foo.qdf
หมายเหตุ: หากคุณไม่ได้ qpdf ติดตั้งแล้ว executables Microsoft Windows สามารถดาวน์โหลดได้จากhttps://github.com/qpdf/qpdf/releasesระบบ Unix เช่น Ubuntu และ Debian GNU / Linux apt install qpdf
สามารถติดตั้งได้โดยการพิมพ์
ขั้นตอนที่ 2.
แก้ไขเอกสาร QDF โดยใช้โปรแกรมแก้ไขข้อความเช่น notepad ++, emacs หรือ gedit ค้นหาคำ/Catalog
และสังเกต << วงเล็บเหลี่ยมมุม >> อยู่ข้างใน ใกล้เคียงคุณจะพบปัจจุบัน/PageLabels
( ถ้ามี )
/PageLabels
เราจะเพิ่มแต่ละส่วนที่ควรจะเป็นเลขที่แตกต่างกันไป รูปแบบคือstart-page
<< style
>> 0
โปรดทราบว่าพื้นที่สีขาวไม่สำคัญและที่หน้าแรกของเอกสาร เว้นแต่จะระบุไว้เป็นอย่างอื่นส่วนใหม่จะเริ่มนับหน้าจาก 1 เสมอ
ตัวอย่าง
นี่คือตัวอย่างเต็มรูปแบบของสิ่งที่ PageLabels อาจมีลักษณะด้วยความคิดเห็นที่เพิ่ม:
/Type /Catalog
/PageLabels <<
/Nums [
0 % From the first page of the document,
<<
/S /r % ...use the lowercase roman numeral style.
>>
6 % From seventh page onward,
<<
/S /D % ...use ordinary digits (arabic numerals)
>>
]
>>
หากไฟล์ไม่มี PageLabels ให้เพิ่มหลังจาก/Type /Catalog
นั้น ตัวอย่างเช่นอาจมีการเปลี่ยนแปลง
1 0 obj
<<
…
/Type /Catalog
>>
endobj
เข้า
1 0 obj
<<
…
/Type /Catalog
/PageLabels
<< /Nums [
0 << >> % No label for cover
1 << /S /r >> % i, ii for index
3 << /S /D /St 15 >> % 15, 16, 17, ... for article
31 << /S /D /P (A-) >> % A-1, A-2, A-3... for appendix
]
>>
>>
endobj
ตัวเลือก: เริ่มจากจำนวนที่แตกต่างกันด้วย /St
แต่ละส่วนเตะเลขที่ 1 /St
จนกว่าคุณจะบอกว่ามันเป็นอย่างอื่นใช้ สังเกตว่าในตัวอย่างด้านบนหน้าสี่เริ่มต้นที่ 15
ทางเลือก: การใช้รูปแบบที่แตกต่างด้วย /S
/S
ผู้ประกอบการจะใช้เวลาโต้แย้งที่ช่วยให้คุณสามารถเลือกรูปแบบเลขที่
- / ตัวเลข D (1, 2, 3 ... )
- / R ตัวพิมพ์ใหญ่ Roman (I, II, III ... )
- / r ตัวพิมพ์เล็ก Roman (i, ii, iii ... )
- / A ตัวอักษรตัวพิมพ์ใหญ่ (A, B, C, .... , X, Y, Z, AA, AB, AC, ... )
- / a ตัวอักษรพิมพ์เล็ก (a, b, c, .... , x, y, z, aa, ab, ac, ... )
หากไม่มี/S
ผู้ดำเนินการส่วนของหน้านั้นจะไม่มีหมายเลข ตัวอย่างเช่น:
0 << >> % No label for cover
ทางเลือก: การเพิ่มคำนำหน้าในแต่ละหน้าด้วย /P
คุณสามารถแสดงสตริงข้อความใด ๆ ก่อนหมายเลขหน้าโดยระบุคำในวงเล็บหลัง/P
:
31
<<
/S /D
/P (A-) % label appendix pages A-1, A-2, A-3
>>
การระบุคำนำหน้าโดยไม่มีสไตล์ ( /S
) จะให้หน้าเว็บที่มีเพียงคำที่ไม่มีตัวเลขใด ๆ สิ่งนี้มีประโยชน์เช่นหากคุณต้องการให้ใบปะหน้ามีเพียงป้ายกำกับ "ใบปะหน้า"
0 << /P (Cover) >> % No number, just "Cover"
ขั้นตอนที่ 3
เรียกใช้fix-qdf
เพื่อให้การแก้ไข PDF ของคุณถูกต้องและใส่ผลลัพธ์ใน bar.qdf
fix-qdf foo.qdf > bar.qdf
ขั้นตอนที่ 4
เปิด bar.qdf ในโปรแกรมดู PDF ของคุณและตรวจสอบว่ามีหมายเลขถูกต้องหรือไม่
ขั้นตอนที่ 5
แปลงไฟล์ QDF กลับเป็น PDF ปกติเช่น:
qpdf bar.qdf bar.pdf
ทาดา คุณทำเสร็จแล้ว ตอนนี้คุณมีเอกสารที่มีหมายเลขหน้ากำกับอย่างถูกต้องใน bar.pdf