debian: พิมพ์ลงไฟล์ pdf

มีงานที่ต้องแปลงไฟล์ภาพ tif เป็น pdf ถ้าหากเป็นภาพหน้าเดียว ก็สามารถแปะลงใน OpenOffice Writer แล้วส่งออกเป็น pdf ได้
แต่ถ้าหากเป็นเอกสารหลายหน้า จะไม่สามารถทำได้
จึงคิดว่าน่าจะใช้วิธีสร้างเครื่องพิมพ์เทียมให้ส่งออกเป็น pdf ดีกว่า ซึ่งจะทำให้สามารถใช้งานได้หลากหลายกว่า ไม่ใช่กับเฉพาะไฟล์ภาพ tif อย่างเดียว

ค้นไปค้นมา ปรากฎว่าแพกเกจ cups เขาทำมาให้อยู่แล้ว ชื่อ cups-pdf ลงเสร็จแล้วก็สามารถใช้งานได้เลย
$ sudo aptitude install cups-pdf

งานต่อมาคือเพิ่มเครื่องพิมพ์
System -> Administration -> Printing
โดยเพิ่มเครื่องพิมพ์เป็น Virtual PDF Printer
และให้ไดรเวอร์เป็น Generic -> Postcript color printer
เสร็จเรียบร้อยแล้ว

สำหรับ tif แบบหลายหน้า สามารถใช้ Document Viewer คือ Evince เปิดเอกสาร แล้วพิมพ์ผ่านเครื่องพิมพ์ postscript-color-printer อันใหม่นี้ได้เลย โดยไฟล์ pdf ที่ได้ จะไปอยู่ในไดเรกทอรี่บ้านของเรา ~/PDF

update-เพิ่มเติมคำสั่ง gs

งานพิมพ์จากวินโดวส์
ให้เลือกเครื่องพิมพ์เป็น Postscript แล้วพิมพ์ลงไฟล์
ต่อจากนี้อาจใช้ gs for windows ทำต่อ
หรือใช้คำสั่งบนลินุกซ์คือ gs รูปแบบคำสั่งคือ
$ gs -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=filename.pdf -- filename.prn
-dNOPAUSE คือให้ทำรวดเดียวไม่ต้องหยุด
-sDEVICE=pdfwrite คือทำเป็น pdf
-- คือทำเสร็จแล้วให้ออกจากโปรแกรมเลย

เพิ่มเติม -sDEVICE
png = png16m
แต่คุณภาพไม่ค่อยดี สู้เป็น pdfwrite ไม่ได้ (เอามาแก้ใน gimp ได้)
ดูรายละเอียดของ DEVICE ได้จากคำสั่ง gs --help

เพิ่มเติมสำหรับวินโดวส์
หากต้องการทำต้นฉบับหนังสือเพื่อส่งโรงพิมพ์ ให้เลือกเครื่องพิมพ์เป็นพวก Image Setter เช่น Scitex เป็นต้น
จะไม่มีปัญหาเรื่องพิมพ์ตกขอบทำให้ขอบขาด

เอามาจาก Hui's BLOG: gs แปลง PDF ภาษาญี่ปุ่นเป็น PNG

กำหนดขนาดกระดาษ
$ gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=output.pdf -c "<< /PageSize [843 596] >> setpagedevice" -- source.ps

ตัวอย่างข้างต้นเป็นขนาด A4 แบบ landscape
(เอาขนาดเป็น นิ้ว คูณด้วย 72
หรือเป็น มิลลิเมตร คูณด้วย 2.8387)

จาก:
Ghostscript:
Taking PDF Creation to the Next Level

หมายเหตุ
หากต้องการ crop ไฟล์ pdf ที่ผลิตออกมาแล้ว สามารถใช้คำสั่ง pdfcrop จะใช้งานง่ายกว่า

รวมไฟล์ pdf
$ gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=combined.pdf file1.pdf
file2.pdf

เอามาจาก Blog of Amorn Jiraseree-amornkun : วิธีรวมไฟล์ pdf หลายไฟล์เข้าด้วยกันในลินุกซ์

tip