โปรแกรมอ่าน SumatraPDF
(github.com/sumatrapdfreader)- SumatraPDF เป็นโปรแกรมอ่านเอกสารหลายรูปแบบสำหรับ Windows รองรับไฟล์ PDF, EPUB, MOBI, CBZ, CBR, FB2, CHM, XPS และ DjVu
- ใบอนุญาตคือ (A)GPLv3 และโค้ดบางส่วนใช้ใบอนุญาต BSD
- ข้อมูลเพิ่มเติมดูได้ที่ Website, Manual, Developer Information
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
เมื่อ Adobe ผลักดันการทำเงินจาก Acrobat อย่างก้าวร้าวมากขึ้น งาน PDF บางส่วนจึงกำลังถูกย้ายไปใช้ เครื่องมือโอเพนซอร์ส SumatraPDF ก็เป็นหนึ่งในเครื่องมือที่ใช้ ส่วน qpdf ใช้สำหรับลบรหัสผ่าน ปลดล็อก และแปลงไฟล์ ติดตั้งบน WSL ได้ด้วย
apt-get install qpdfสามารถลบรหัสผ่านได้ด้วย
qpdf --decrypt --password="" input.pdf output.pdfและ PDF4QT เป็นโปรแกรมแก้ไข PDF แบบโอเพนซอร์สสำหรับลบ จัดเรียง และแยกหน้า แต่ยังไม่มีรีลีสบน Chocolatey จึงต้องติดตั้งเองInkscape และ LibreOffice Draw เหมาะสำหรับแก้ไข PDF และเพิ่มข้อความ, MuPDF มีเครื่องมือบรรทัดคำสั่งและแพ็กเกจ Python สำหรับพาร์ส กรอกฟอร์ม และเพิ่มข้อความ, SumatraPDF ใช้สำหรับเปิดดู และ pdfplumber มีประโยชน์ในการดึงตารางจาก PDF เข้าสู่ data pipeline ร่วมกับ Jupyter Lab
บทความ retrospective ที่ยอดเยี่ยมจากผู้เขียน SumatraPDF: https://blog.kowalczyk.info/article/2f72237a4230410a888acbfc...
ความหมายจริง ๆ น่าจะใกล้เคียงกับว่า ให้ผู้ใช้เป็นคนทดสอบแทนได้ มากกว่า ไม่ใช่ว่าไม่จำเป็นต้องมีการทดสอบหรือ code review
ผู้เขียนเองก็คงทดสอบโค้ดอยู่บ้าง เพราะการลองรันแอปก็ถือเป็นการทดสอบเหมือนกัน เพียงแต่น่าจะไม่ใช่วิธีที่เข้มงวดหรือเป็นระบบพอจะพูดถึงความอุ่นใจจาก regression test ได้
แทบไม่มีใครจริงจังกับการอ้างว่าเป็นไปไม่ได้ที่จะเขียนโค้ดซับซ้อนโดยไม่มี automated test ผมสนับสนุน automated test อย่างมาก แต่ช่วงปลายยุค 90 ถึงต้นยุค 2000 เคยสร้าง renderer แบบ cross-platform ที่ค่อนข้างใหญ่โดยไม่มี automated test เลย กระบวนการนั้นใช้เวลานาน และยิ่งแก้ไขก็ยิ่งน่ากลัวขึ้นเรื่อย ๆ
กระทู้ปี 2023 ที่นำบทความเดียวกันมาโพสต์ซ้ำ: https://news.ycombinator.com/item?id=35065785 - มีนาคม 2023, 173 ความเห็น
อยากให้นักพัฒนา PDF reader ทุกคนทำ ฟีเจอร์ overview ของ sioyek[0] เวลาวางเมาส์เหนือรายการ cross-reference เนื้อหาที่อ้างอิงจะเปิดขึ้นในหน้าต่างพรีวิวเล็ก ๆ
เป็นฟีเจอร์ที่เปลี่ยนเกมโดยสิ้นเชิงเวลาอ่านตำราเรียนและบทความวิชาการด้านเทคนิค และจะเน้นย้ำประโยชน์ของมันเท่าไรก็ไม่เกินจริง
[0] https://github.com/ahrm/sioyek#overview
อีกอย่าง ถ้าฟีเจอร์นั้นทำให้ PDF reader รันโค้ดระยะไกลตามอำเภอใจได้ ก็น่าจะเป็นความเสี่ยงร้ายแรงไม่ใช่หรือ
https://en.m.wikipedia.org/wiki/Transclusion
เพิ่งลองติดตั้งเป็นครั้งแรกเมื่อกี้ ประสิทธิภาพเหนือกว่า Adobe Reader แน่นอน และยังเหนือกว่า Foxit ด้วย การชนะ Adobe Reader ไม่ใช่เรื่องใหญ่อะไร แต่การชนะ Foxit นี่ค่อนข้างน่าประทับใจ
ขนาดติดตั้งก็มีแค่ราว ๆ 10% ของโปรแกรมพวกนั้นเอง สงสัยจริง ๆ ว่า Adobe กำลังทำอะไรอยู่ ทำไมซอฟต์แวร์ถึงได้ช้าจนทนไม่ได้และใช้งานลำบากขนาดนี้
Sumatra นั้นยอดเยี่ยม และแทบจะเป็น PDF reader ตัวเดียวที่ใช้บน Windows แต่มีฟีเจอร์แค่ประมาณ 10% ของ Adobe Acrobat เท่านั้น อย่างไรก็ตาม 10% นั้นคือฟีเจอร์ที่แทบทุกคนต้องการ
ขออวยพรให้คนที่เห็นสเปก PDF แล้วคิดว่า “ดีเลย อยากลองเขียน parser สำหรับสิ่งนี้”
เมื่อก่อนใช้ poppler แล้วเปลี่ยนมาใช้ MuPDF ตอนนั้น MuPDF มีความเคลื่อนไหวมากกว่า และหลังจากนั้น poppler ก็ดูเหมือนจะเริ่มพัฒนาเร็วขึ้นด้วย
ชุดฟีเจอร์ PDF หลัก ๆ เองไม่ได้แย่ขนาดนั้นในแง่การนำไป implement เท่าที่เห็น ส่วนที่แย่และซับซ้อนคือสิ่งที่เพิ่มเข้ามาทีหลังอย่าง XML, JavaScript ในฟอร์ม, ฟีเจอร์กราฟิกเวกเตอร์ซับซ้อนอย่าง vector masking, การรองรับ color space หลายแบบและ CMYK separation, การจัดการฟอนต์และการเรนเดอร์ข้อความ
ความยากอีกอย่างคือยังต้องเรนเดอร์ PDF ที่สร้างผิด ๆ ให้เร็วด้วย PDF นั้นทำพังได้ง่ายตอนสร้าง และผู้คนก็ทำพังกันในทุกวิธีที่จินตนาการได้ ถ้า Adobe หรือ Chrome เปิดได้ ก็จะพูดได้ยากว่าเป็น “PDF ที่ผิด” ดังนั้นนักพัฒนา MuPDF จึงเพิ่ม heuristic จำนวนมากเพื่อให้เอกสาร PDF ที่เสียยังแสดงผลได้
https://tcpdf.org/examples/example_014/
ไม่รู้เลยว่าสิ่งนี้ทำงานได้อย่างไรกันแน่
สเปกดั้งเดิมหน้าตาไม่ค่อยสวยนัก เช่น ใช้คีย์ใน dictionary เป็นตัวอักษรตัวเดียวเพื่อประหยัดไบต์ในฟอร์แมต แต่ก็มีส่วนที่คิดมาดีจริง ๆ อยู่ Appearance Streams นั้นยอดเยี่ยมสำหรับความเข้ากันได้ทั้งย้อนหลังและไปข้างหน้า และอาจเป็นเหตุผลใหญ่ที่สุดที่ยังไม่มีอะไรมาแทน PDF ได้
แต่เพราะไฟล์ PDF จำนวนมากไม่ได้ทำตามสเปก จึงต้องยอมรับไฟล์ PDF ที่ผิด ๆ อย่างผ่อนปรนเหมือน parser ของ Adobe ด้วย
อัปเดตใหญ่ ของ SumatraPDF เพิ่งออกเมื่อวาน [1] รายการงานที่ค้างอยู่ [2] มีการแก้บั๊กและการปรับปรุงจำนวนมาก
[1] https://github.com/sumatrapdfreader/sumatrapdf/releases/tag/...
[2] https://github.com/sumatrapdfreader/sumatrapdf/issues/3672
MainWindowBackground = #191919FixedPageUI [TextColor = #282828BackgroundColor = #ebdbb2SelectionColor = #2d938f...จนถึงตอนนี้ผมใช้ AutoHotkey เขียนทับ
SumatraPDF-settings.txtเพื่อสลับไปมาระหว่างโหมดต่าง ๆ อยากแชร์สคริปต์เล็ก ๆ นี้ แต่เมื่อไม่นานมานี้มันดันพังขึ้นมาเฉย ๆอย่างที่หลายคนบอก Sumatra เป็นหนึ่งในยูทิลิตีเฉพาะ Windows ไม่กี่ตัวที่มักจะคิดถึงเสมอเมื่อใช้ Mac หรือ Linux โดยเฉพาะเวล ดูแผนผังวงจร แบบเครื่องกล/เทคนิค และ datasheet มีการใช้งานง่าย ๆ สองอย่างที่คิดถึงทุกวัน
คือ Alt + เลื่อนเมาส์เพื่อซูมเข้า/ออก, และ คลิกขวา + ลากเพื่อเลื่อนมุมมอง อยากรู้ว่าบน Mac หรือ Linux มี viewer ตัวไหนที่รองรับสองฟังก์ชันนี้ไหม Skim บน Mac รองรับ Option + เลื่อนเมาส์ และคลิกซ้าย + ลากเพื่อเลื่อน แต่ตั้งค่าใหม่ให้เป็นคีย์หรือปุ่มเมาส์อื่นไม่ได้
ฟีเจอร์หนึ่งที่ชอบมากคือ Page Down จะพาไปที่ด้านบนสุดของหน้าถัดไป มันใช้งานได้จริงมากเวลาต้องการไล่ดูเร็ว ๆ ด้วยระดับซูมที่ไม่พอดีกับขนาดหน้า
คิดว่าคล้ายกันพอสมควรแล้ว ถ้าอยากบังคับให้ได้จริง ๆ ก็น่าจะมีแอปแชร์แวร์ที่ทำ keyboard emulation เฉพาะแอปและ remap input แบบทันทีได้
เท่าที่รู้ https://www.keyboardmaestro.com/main/ เป็นวิธีแก้มาตรฐาน
สิ่งที่สะดวกมากใน SumatraPDF คือเมื่อไฟล์ภาพทั่วไปถูกแก้ไข มันจะ โหลดใหม่อัตโนมัติ ดังนั้นจึงง่ายที่จะแสดงผลลัพธ์กราฟิกในหน้าต่างด้วยวิธีบันทึกเป็นไฟล์ภาพ
ชอบ SumatraPDF มาก ใช้มาหลายปีแล้วและยอดเยี่ยม เวลาใช้ LaTeX ใน vim แล้วเปิดเอกสารไว้ข้าง ๆ ใน Sumatra พอคอมไพล์ก็อัปเดตทันที
การโหลดหน้าใหม่ทันทีทำให้ workflow ลื่นไหลมาก
มีโอกาสสูงว่าคุณน่าจะใช้อยู่ มัน integrate กับ Sumatra เป็นค่าเริ่มต้น และยัง integrate กับ MuPDF, Skim ฯลฯ ด้วย จุดนี้แหละที่เจ๋ง
ก่อนย้ายมา Linux เคยลองใช้ Sumatra อยู่พักหนึ่ง ก็ถือว่าค่อนข้างดีและเร็ว
ระหว่างเรียนปริญญาเอก ตอนเขียนต้นฉบับและ论文 ผมใช้ Sumatra PDF เป็นเครื่องมือหลักในการดูการเปลี่ยนแปลงของ PDF แบบเรียลไทม์ Acrobat รุ่นจ่ายเงินและ Foxit รุ่นฟรีมีฟีเจอร์มากกว่า แต่จะ ล็อก ไฟล์ที่กำลังเปลี่ยนแปลงอยู่