Vì sao PDF của tôi hầu như không nhỏ đi?
Tôi nén PDF mà nó chỉ đi từ 4.1 MB xuống 4.0 MB. Công cụ hỏng à?
Một tệp PDF là một tủ hồ sơ
Mô hình tư duy gây ra nỗi thất vọng này là hình dung PDF như một bức ảnh chụp tài liệu. Không phải vậy. Một tệp PDF, theo định nghĩa của ISO 32000, là một vật chứa gồm các đối tượng được đánh số: cây trang, các luồng nội dung đầy toán tử vẽ, chương trình font chữ nhúng, các đối tượng ảnh XObject, trường biểu mẫu, chú thích, mục lục, và một bảng tham chiếu chéo cho biết mỗi đối tượng bắt đầu ở đâu.
Phần lớn các đối tượng đó đã được nén sẵn. Luồng nội dung thường được mã hoá bằng Flate, đúng thuật toán mà một tệp ZIP dùng. Ảnh chụp nhúng thường được lưu thành luồng DCT, tức là dữ liệu JPEG chuyển qua nguyên vẹn. Vậy nên khi một trình nén đa dụng nhìn vào một tệp PDF, nó đang nhìn vào một chiếc hộp đựng những thứ mà mỗi thứ đều đã được nén một lần rồi.
Hãy tìm xem số byte nằm ở đâu trước khi nén bất cứ thứ gì
Phép chẩn đoán hữu ích nhất là biết mình đang có loại tài liệu nào, vì điều đó dự đoán được kết quả gần như trọn vẹn.
| Loại tài liệu | Số byte nằm ở đâu | Lưu lại theo cấu trúc làm được gì |
|---|---|---|
| Báo cáo văn bản xuất từ trình soạn thảo | Chương trình font chữ nhúng và các luồng nội dung nhỏ | Rất ít; nội dung vốn đã dày đặc |
| Trang tài liệu quét | Mỗi trang một ảnh lớn | Gần như không gì cả, nếu không đụng vào ảnh |
| Bản xuất từ bài trình chiếu | Ảnh chụp nhúng và các dải chuyển màu | Được một ít, nếu ảnh bị lặp lại qua nhiều slide |
| Bản vẽ kỹ thuật | Các luồng nội dung vector dài | Được một ít, nhờ mã hoá lại luồng và xoá đối tượng không dùng |
| Biểu mẫu có tệp đính kèm | Tệp nhúng, JavaScript, từ điển chú thích | Được nhiều, nếu những thứ phụ đó có thể gỡ bỏ |
Lưu lại theo cấu trúc thực sự bỏ đi những gì
Lưu lại theo cấu trúc là ghi lại tài liệu mà không thay đổi diện mạo của bất kỳ trang nào. Nó có thể loại bỏ những đối tượng không còn được thứ gì tham chiếu tới, vốn tích tụ lại mỗi lần tài liệu được chỉnh sửa rồi lưu theo kiểu bổ sung. Nó có thể nén bảng tham chiếu chéo và dồn các đối tượng nhỏ vào luồng đối tượng. Nó có thể bỏ siêu dữ liệu tài liệu, ảnh thu nhỏ, và lịch sử chỉnh sửa mà một số phần mềm tạo PDF để sót lại.
Với một tài liệu đã bị sửa và lưu lại nhiều lần, đó có thể là một khoản lợi lớn. Với một tài liệu được xuất sạch sẽ, một lần duy nhất, từ một trình soạn thảo văn bản, thì chẳng có gì để dọn: tệp vốn đã gần với dạng nhỏ nhất của chính nó, và bớt được một trăm kilobyte trên bốn megabyte đúng là kết quả nên trông đợi.
Vì sao một tài liệu văn bản chống lại việc nén
Trong một tệp PDF văn bản, phần lớn dung lượng thường là font chữ nhúng. Một chương trình font là một tệp nhị phân gọn chứa đường viền glyph và các chỉ dẫn hinting, và nó có mặt ở đó vì tài liệu phải hiển thị y hệt trên một máy không cài sẵn kiểu chữ ấy. Bạn không thể nén nó biến mất mà không cắt tập con của nó sâu hơn hoặc gỡ hẳn nó ra, mà gỡ ra thì làm đổi diện mạo trang.
Bản thân phần chữ thì bé xíu. Một trăm trang văn xuôi chỉ là vài trăm kilobyte ký tự trước khi nén. Nếu tệp PDF văn bản của bạn nặng, hãy nhìn vào font chữ và vào những hình ảnh nấp sau lớp chữ — một logo lặp lại ở phần đầu trang, một hình mờ nền — chứ đừng nhìn vào chữ nghĩa.
Vì sao một bản quét thì sụp xuống
Một trang tài liệu quét là một bức ảnh lớn chụp một tờ giấy, thường thu ở 300 chấm trên mỗi inch trở lên. Một trang A4 ở 300 DPI vào khoảng 2480 × 3508 pixel — gần chín triệu pixel, cho một trang mà lượng thông tin thật chỉ là vài kilobyte chữ. Đó là lý do các bản quét đáp ứng mạnh đến vậy với kiểu nén raster hoá: giảm độ phân giải kết xuất rồi mã hoá lại ảnh trang là đánh thẳng vào phần thực sự nặng của tệp.
Đó cũng là lý do chế độ này có tính phá huỷ. Một khi trang đã thành hình ảnh thì lớp văn bản tìm kiếm được, các liên kết, trường biểu mẫu, chú thích, cấu trúc thẻ hỗ trợ tiếp cận và mọi chữ ký số đều biến mất. FileSlimmer xem raster hoá là một chế độ riêng, dán nhãn rõ ràng kèm cảnh báo đó, chứ không dùng nó làm phương án dự phòng âm thầm khi việc lưu lại theo cấu trúc gây thất vọng.
Vì sao không ai hứa được với bạn một con số
Dung lượng mục tiêu cho một tệp PDF là một cuộc tìm kiếm trên hai trục độ phân giải kết xuất và chất lượng ảnh, và cuộc tìm kiếm đó có một cái sàn: dưới một độ phân giải nào đó, chữ trên bản quét không còn đọc được. Việc một tài liệu cụ thể có đạt được một hạn mức cụ thể phía trên cái sàn ấy hay không phụ thuộc vào số trang, mật độ mực, lượng nội dung ảnh chụp và độ nhiễu của máy quét. Hai tài liệu cùng số trang có thể kết thúc ở hai dung lượng rất khác nhau.
Cách hành xử trung thực là dừng lại ở cái sàn và báo lại cuộc tìm kiếm đã dừng ở đâu, đúng như các mức đặt sẵn cho PDF của FileSlimmer vẫn làm. Một công cụ lúc nào cũng chạm đúng con số bạn gõ vào thì hoặc là đang nói dối về con số đó, hoặc là đang phá huỷ tài liệu để đạt tới nó.
Trước khi trách công cụ
- Xem tệp PDF có phải bản quét không. Thử bôi đen một dòng chữ: nếu con trỏ không chọn được gì, thì mọi trang đều là ảnh.
- Đối chiếu số trang với dung lượng. Một tệp 40 MB mà chỉ có ba trang là nặng ảnh; một tệp 40 MB với 900 trang có thể hoàn toàn hợp lý.
- Xem tài liệu có bị mã hoá không. Một tệp PDF được bảo vệ bằng mật khẩu hoàn toàn không thể tái cấu trúc cho tới khi được mở khoá.
- Xem nó có được ký không. Ghi lại một tài liệu đã ký sẽ làm chữ ký mất hiệu lực, và đó thường là kết cục tệ hơn một tệp nặng.
- Xem bạn thực sự cần gì. Tách riêng sáu trang bạn phải gửi thường ăn đứt việc nén cả chín mươi trang.
Công cụ cho việc này
Nguồn tham khảo
- ISO 32000-2 — Document management, Portable Document Format
- Adobe — PDF 32000-1:2008, the freely published PDF 1.7 specification
- PDF Association — ISO 32000 and the PDF standards family