หากคุณเพียงแค่ต้องการที่จะเชื่อมสองไฟล์ PDF โดยไม่ต้องปรับกระบวนการของเนื้อหาใด ๆpdftk
สำหรับคุณ (สำหรับ Mac OS X สามารถใช้งานได้ผ่าน MacPorts หรือ Fink สำหรับ Linux มีแพ็คเกจดั้งเดิมสำหรับการแจกจ่ายที่สำคัญทั้งหมดสำหรับ Windows ดูที่นี่ ) ลองสิ่งนี้:
pdftk title.pdf content.pdf cat output book.pdf
นี้จะย่อหน้าtitle.pdfไปcontent.pdfและเขียนผลลงในbook.pdf
pdftk
เป็น "ใบ้" แต่เป็นวิธีที่รวดเร็วในการต่อไฟล์ PDF สองไฟล์ (หรือมากกว่า) เข้าด้วยกัน "โง่" ในขณะที่pdftk
ไม่ได้ตีความสตรีมข้อมูล PDF ในทางใดทางเพียงแค่ตรวจสอบให้แน่ใจว่าหมายเลขวัตถุภายในได้รับการปรับเปลี่ยนใหม่ตามความจำเป็นและปรากฏในxref
โครงสร้างPDF (ซึ่งโดยทั่วไปเป็น PDF ToCสำหรับ วัตถุ)
Ghostscript:
หากคุณต้องการใช้ Ghostscript คำสั่งพื้นฐานในการต่อเชื่อมไฟล์สองไฟล์เดียวกันคือ:
gs \
-o book.pdf \
-sDEVICE=pdfwrite \
title.pdf \
content.pdf
อย่างไรก็ตามตามที่คุณพบบรรทัดคำสั่งพื้นฐานนี้อาจทำให้คุณภาพของภาพของคุณแย่ลง เหตุผลก็คือ Ghostscript ไม่ใช่ 'dump' เมื่อทำการประมวลผล PDF: มันตีความมันอย่างสมบูรณ์เมื่ออ่านและสร้างไฟล์ใหม่ทั้งหมดเมื่อเขียนผลลัพธ์ สำหรับการสร้างผลลัพธ์มันจะใช้การตั้งค่าเริ่มต้นโดยอัตโนมัติเพื่อดูรายละเอียดจำนวนมากในการประมวลผลโดยรวม ค่าเริ่มต้นเหล่านี้จะใช้กับทุกกรณีที่การร้องขอไม่ได้สั่ง Ghostscript ไว้เป็นอย่างอื่น
ดังนั้นวิธีการของ Ghostscript ในการสร้างbook.pdfใหม่นั้นมีความ "ฉลาด" มากกว่า แต่ก็ช้ากว่าpdftk
วิธีของมันมาก (นี่เป็นเหตุผลว่าทำไม Ghostscript ในหลาย ๆ กรณีสามารถ - ภายในขีด จำกัด - "ซ่อมแซม" ไฟล์ b0rken PDF หรือเพื่อฝังฟอนต์ลงในไฟล์ PDF เอาต์พุตที่ไม่ได้ฝังอยู่ในอินพุต PDF หรือลบภาพที่ซ้ำกันแทนที่ พวกเขาโดยการอ้างอิงอื่น ๆ - และโดยรวมแล้วสร้างไฟล์ที่เล็กกว่าดีที่สุดที่ดีกว่าจากไฟล์ PDF ป่อง ... )
วิธีแก้ไขคือไม่ให้ Ghostscript ใช้ค่าเริ่มต้น: โดยการเพิ่มพารามิเตอร์ที่กำหนดเองเพิ่มเติมลงในบรรทัดคำสั่ง
มันหมายความว่าอะไร"Ghostscript 'ตีความ' ป้อนข้อมูลรูปแบบไฟล์ PDF ของมัน" ?
ไฟล์และเนื้อหาทั้งหมด (วัตถุ, สตรีม, แบบอักษร, ภาพ, ... ) จะถูกอ่านตรวจสอบและเก็บไว้ในการเป็นตัวแทนภายในของตัวเองก่อนที่จะแยก PDF ที่เป็นผลลัพธ์ออกมาพร้อมกับวัตถุ PDF ของมันอีกครั้ง อย่างไรก็ตามเมื่อ 'แยกออก' Ghostscript จะใช้การตั้งค่าเริ่มต้นภายในทั้งหมดสำหรับพารามิเตอร์หลายร้อย[*]ซึ่งมีอยู่
น่าเสียดายนี่เป็นสาเหตุให้คุณ "ประมวลผลภาพซ้ำ" ตามการตั้งค่าเริ่มต้นซึ่งสามารถหลีกเลี่ยงหรือลบล้างได้โดยการเพิ่มพารามิเตอร์บรรทัดคำสั่ง (ต้องการ) ของคุณเอง
ปัญหาภาพของคุณอาจเกิดจากความต้องการ Ghostscript (เนื่องจากปัญหาด้านลิขสิทธิ์) เพื่อเข้ารหัสภาพ JPEG2000 อีกครั้งเป็นการเข้ารหัส JPEG หากคุณต้องการหลีกเลี่ยงปัญหานี้เพิ่มสิ่งต่อไปนี้ใน commandline ของคุณ:
-dAutoFilterColorImages=false \
-dAutoFilterGrayImages=false \
-dColorImageFilter=/FlateEncode \
-dGrayImageFilter=/FlateEncode \
ตัวเลือก commandline ที่เกี่ยวข้องกับรูปภาพอื่น ๆ ที่ต้องพิจารณา ได้แก่ :
-dColorConversionStrategy=/LeaveColorUnchanged \
-dDownsampleMonoImages=false \
-dDownsampleGrayImages=false \
-dDownsampleColorImages=false \
ดังนั้น commandline Ghostscript ที่สมบูรณ์ที่สามารถทำให้คุณมีความสุขควรอ่าน:
gs \
-o book.pdf \
-sDEVICE=pdfwrite \
-dColorConversionStrategy=/LeaveColorUnchanged \
-dDownsampleMonoImages=false \
-dDownsampleGrayImages=false \
-dDownsampleColorImages=false \
-dAutoFilterColorImages=false \
-dAutoFilterGrayImages=false \
-dColorImageFilter=/FlateEncode \
-dGrayImageFilter=/FlateEncode \
title.pdf \
content.pdf
คุณสามารถบอก Ghostscript ไม่ให้บีบอัดรูปภาพในไฟล์ PDF เอาต์พุตโดยใช้ commandline นี้:
gs \
-o book.pdf \
-sDEVICE=pdfwrite \
-dColorConversionStrategy=/LeaveColorUnchanged \
-dEncodeColorImages=false \
-dEncodeGrayImages=false \
-dEncodeMonoImages=false \
title.pdf \
content.pdf
.
[*]:
หากคุณสนใจที่จะเรียนรู้เกี่ยวกับรายการการตั้งค่าเริ่มต้นทั้งหมดซึ่งอุปกรณ์pdfwriteของ Ghostscript ใช้อยู่ให้รันคำสั่งต่อไปนี้ ก็จะส่งกลับให้คุณเต็มรูปแบบรายการ:
gs \
-sDEVICE=pdfwrite \
-o /dev/null \
-c "currentpagedevice { exch ==only ( ) print == } forall"
สำหรับคำอธิบายเกี่ยวกับสิ่งที่ว่าทุกพารามิเตอร์เหล่านี้จะหมายความว่าคุณจะต้องอ่านในเอกสาร Adobe เกี่ยวกับ "Distiller พารามิเตอร์" Ghostscript พยายามอย่างหนักที่จะเลียนแบบสิ่งเหล่านี้ ...