ข้ามไปยังเนื้อหา
FileSlimmer
เครื่องมือ
คู่มือ

ทำไม PDF ของฉันถึงเล็กลงแทบไม่ได้

ตรวจทานล่าสุด

เอา PDF ไปผ่านตัวบีบอัดแล้วลดจาก 4.1 MB เหลือ 4.0 MB เครื่องมือเสียหรือเปล่า

อ่าน 4 นาที · ตรวจทานเมื่อ 17 สิงหาคม 2569

PDF คือตู้เก็บเอกสาร

ภาพในหัวที่ทำให้ผิดหวังคือการคิดว่า PDF เป็นรูปถ่ายของเอกสาร มันไม่ใช่ PDF ตามที่นิยามไว้ใน ISO 32000 คือคอนเทนเนอร์ที่บรรจุอ็อบเจกต์ที่มีหมายเลขกำกับ ทั้งโครงสร้างต้นไม้ของหน้า สตรีมเนื้อหาที่เต็มไปด้วยคำสั่งวาด โปรแกรมฟอนต์ที่ฝังมา ภาพแบบ XObject ฟิลด์ฟอร์ม คำอธิบายประกอบ สารบัญ และตารางอ้างอิงไขว้ที่บอกว่าอ็อบเจกต์แต่ละตัวเริ่มตรงไหน

อ็อบเจกต์เหล่านั้นส่วนใหญ่ถูกบีบอัดไว้แล้ว สตรีมเนื้อหามักเข้ารหัสด้วย Flate ซึ่งเป็นอัลกอริทึมเดียวกับที่ไฟล์ ZIP ใช้ ภาพถ่ายที่ฝังมามักถูกเก็บเป็นสตรีมแบบ DCT ซึ่งก็คือข้อมูล JPEG ที่ผ่านเข้ามาโดยไม่ถูกเปลี่ยนแปลง ดังนั้นเวลาตัวบีบอัดอเนกประสงค์มองไปที่ PDF มันกำลังมองกล่องที่บรรจุของซึ่งแต่ละชิ้นผ่านการบีบอัดมาแล้วหนึ่งรอบ

หาให้เจอก่อนว่าไบต์อยู่ตรงไหน ก่อนจะบีบอัดอะไรทั้งนั้น

การวินิจฉัยที่มีประโยชน์ที่สุดอย่างเดียวคือการรู้ว่าคุณมีเอกสารชนิดไหนอยู่ในมือ เพราะมันทำนายผลลัพธ์ได้เกือบทั้งหมด

อะไรครองขนาดของ PDF แยกตามชนิดเอกสาร
ชนิดเอกสารไบต์อยู่ตรงไหนการบันทึกเชิงโครงสร้างทำอะไรได้
รายงานข้อความจากโปรแกรมประมวลผลคำโปรแกรมฟอนต์ที่ฝังมาและสตรีมเนื้อหาขนาดเล็กได้น้อยมาก เพราะเนื้อหาแน่นอยู่แล้ว
หน้าที่สแกนมาภาพขนาดใหญ่หนึ่งภาพต่อหนึ่งหน้าแทบไม่ได้อะไรเลยถ้าไม่แตะภาพ
ไฟล์ส่งออกจากงานนำเสนอภาพถ่ายที่ฝังมาและการไล่เฉดสีได้บ้าง หากภาพถูกใช้ซ้ำข้ามสไลด์
แบบเขียนแบบทางวิศวกรรมสตรีมเนื้อหาแบบเวกเตอร์ที่ยาวมากได้บ้าง โดยเข้ารหัสสตรีมใหม่และลบอ็อบเจกต์ที่ไม่ถูกใช้
ฟอร์มที่มีไฟล์แนบไฟล์ที่ฝังมา JavaScript และพจนานุกรมคำอธิบายประกอบได้เยอะ หากส่วนเสริมเหล่านั้นลบออกได้

การบันทึกเชิงโครงสร้างลบอะไรออกไปจริง ๆ

การบันทึกเชิงโครงสร้างคือการเขียนเอกสารขึ้นใหม่โดยไม่เปลี่ยนหน้าตาของหน้าใดเลย มันตัดอ็อบเจกต์ที่ไม่มีอะไรอ้างถึงอีกแล้วออกได้ ซึ่งเป็นของที่สะสมขึ้นทุกครั้งที่เอกสารถูกแก้และบันทึกแบบเพิ่มส่วนต่อท้าย มันบีบอัดตารางอ้างอิงไขว้และอัดอ็อบเจกต์เล็ก ๆ รวมไว้ในสตรีมอ็อบเจกต์ได้ และมันลบเมตาดาต้าของเอกสาร ภาพย่อ และประวัติการแก้ไขที่โปรแกรมผู้ผลิตบางตัวทิ้งไว้ได้

กับเอกสารที่ถูกแก้และบันทึกซ้ำมาหลายรอบ นั่นอาจเป็นชัยชนะก้อนใหญ่ แต่กับเอกสารที่ส่งออกมาอย่างสะอาดเพียงครั้งเดียวจากโปรแกรมประมวลผลคำ ไม่มีอะไรให้เก็บกวาด ไฟล์นั้นใกล้เคียงรูปที่เล็กที่สุดของตัวเองอยู่แล้ว และการลดไปหนึ่งร้อยกิโลไบต์จากสี่เมกะไบต์คือผลลัพธ์ที่ควรคาดหวังพอดี

ทำไมเอกสารข้อความถึงดื้อ

ใน PDF ที่เป็นข้อความ สัดส่วนใหญ่ของไฟล์มักเป็นฟอนต์ที่ฝังมา โปรแกรมฟอนต์คือไฟล์ไบนารีขนาดกะทัดรัดที่บรรจุเส้นขอบของตัวอักษรและคำสั่งจัดวางเส้น มันอยู่ตรงนั้นเพราะเอกสารต้องแสดงผลเหมือนกันเป๊ะบนเครื่องที่ไม่ได้ติดตั้งฟอนต์นั้น คุณบีบอัดมันให้หายไปไม่ได้ นอกจากจะตัดชุดตัวอักษรลงอีกหรือลบมันทิ้ง และการลบมันทิ้งเปลี่ยนหน้าตาของหน้า

ตัวข้อความเองนั้นเล็กจิ๋ว ข้อความร้อยหน้าคือตัวอักษรไม่กี่ร้อยกิโลไบต์ก่อนบีบอัดด้วยซ้ำ ถ้า PDF ข้อความของคุณใหญ่ ให้ไปดูที่ฟอนต์และภาพที่ซ่อนอยู่หลังข้อความ เช่น โลโก้ที่ซ้ำอยู่ในหัวกระดาษ หรือลายน้ำพื้นหลัง แทนที่จะไปดูที่ตัวหนังสือ

ทำไมไฟล์สแกนถึงยุบลงได้มาก

หน้าที่สแกนมาคือภาพถ่ายขนาดใหญ่ของแผ่นกระดาษหนึ่งแผ่น ซึ่งมักถ่ายมาที่ 300 จุดต่อนิ้วหรือมากกว่า หน้ากระดาษ A4 ที่ 300 DPI มีขนาดราว 2480 × 3508 พิกเซล คือเกือบเก้าล้านพิกเซล สำหรับหน้าที่มีเนื้อหาสารสนเทศเพียงข้อความไม่กี่กิโลไบต์ นี่คือเหตุผลที่ไฟล์สแกนตอบสนองต่อการบีบอัดแบบแรสเตอร์อย่างน่าตกใจ เพราะการลดความละเอียดในการเรนเดอร์และเข้ารหัสภาพของหน้าใหม่คือการโจมตีตรงส่วนที่ใหญ่จริง ๆ ของไฟล์

และนั่นก็เป็นเหตุผลที่โหมดนี้ทำลายข้อมูล เมื่อหน้ากลายเป็นภาพไปแล้ว ชั้นข้อความที่ค้นหาได้ ลิงก์ ฟิลด์ฟอร์ม คำอธิบายประกอบ โครงสร้างแท็กเพื่อการเข้าถึง และลายเซ็นดิจิทัลใด ๆ จะหายไปหมด FileSlimmer จึงจัดให้การแปลงเป็นแรสเตอร์เป็นโหมดแยกต่างหากที่ติดป้ายชัดเจนพร้อมคำเตือนนั้น แทนที่จะใช้เป็นทางออกเงียบ ๆ เมื่อการบันทึกเชิงโครงสร้างให้ผลไม่น่าพอใจ

ทำไมไม่มีใครรับประกันตัวเลขให้คุณได้

ขนาดเป้าหมายของ PDF คือการค้นหาบนความละเอียดในการเรนเดอร์และคุณภาพของภาพ และการค้นหานั้นมีเพดานล่าง เพราะต่ำกว่าความละเอียดระดับหนึ่ง ข้อความบนไฟล์สแกนจะอ่านไม่ออก ส่วนที่ว่าเอกสารหนึ่ง ๆ จะไปถึงงบที่กำหนดเหนือเพดานล่างนั้นได้หรือไม่ ขึ้นอยู่กับจำนวนหน้า ปริมาณหมึกบนหน้า สัดส่วนเนื้อหาที่เป็นภาพถ่าย และสัญญาณรบกวนจากเครื่องสแกน เอกสารสองฉบับที่มีจำนวนหน้าเท่ากันอาจจบลงที่ขนาดต่างกันมาก

พฤติกรรมที่ซื่อตรงคือหยุดที่เพดานล่างแล้วรายงานว่าการค้นหาหยุดตรงไหน ซึ่งเป็นสิ่งที่ค่าตั้งล่วงหน้าสำหรับขนาดเป้าหมายของ PDF ใน FileSlimmer ทำ เครื่องมือที่ทำตัวเลขที่คุณพิมพ์เข้าไปได้ทุกครั้ง ไม่ก็โกหกเรื่องตัวเลข ไม่ก็กำลังทำลายเอกสารเพื่อไปให้ถึงตัวเลขนั้น

ก่อนจะโทษเครื่องมือ

  • ตรวจว่า PDF เป็นไฟล์สแกนหรือไม่ ลองลากเลือกข้อความสักบรรทัด ถ้าเคอร์เซอร์เลือกอะไรไม่ได้เลย แปลว่าทุกหน้าเป็นภาพ
  • เทียบจำนวนหน้ากับขนาดไฟล์ ไฟล์ 40 MB ที่มีสามหน้าคือไฟล์ที่หนักไปทางภาพ ส่วนไฟล์ 40 MB ที่มี 900 หน้าอาจสมเหตุสมผลอยู่แล้ว
  • ตรวจว่าเอกสารถูกเข้ารหัสลับไว้หรือไม่ PDF ที่ป้องกันด้วยรหัสผ่านจะปรับโครงสร้างไม่ได้เลยจนกว่าจะปลดล็อก
  • ตรวจว่าเอกสารมีลายเซ็นหรือไม่ การเขียนเอกสารที่มีลายเซ็นขึ้นใหม่ทำให้ลายเซ็นใช้ไม่ได้ ซึ่งมักเป็นผลลัพธ์ที่แย่กว่าไฟล์ขนาดใหญ่
  • ตรวจว่าคุณต้องการอะไรจริง ๆ การแยกเอาเฉพาะหกหน้าที่ต้องส่งออกมามักได้ผลดีกว่าการบีบอัดทั้งเก้าสิบหน้า

เครื่องมือสำหรับเรื่องนี้

แหล่งอ้างอิง

คู่มืออื่น ๆ

คู่มือทั้งหมดของ FileSlimmer