如何知道 PDF 文件是否被壓縮並(取消)壓縮它
我剛剛了解到可以壓縮 PDF 文件以減小其磁碟大小。
- 我想知道如何知道 PDF 文件是否已經被壓縮?
- 可以使用哪些應用程序/命令來壓縮或解壓縮 PDF 文件?
我的環境是 Linux Ubuntu 10.10。
一些嘗試沒有給出令人滿意的結果:
- 以下是嘗試的結果
pdftk
:$ pdftk 3.pdf output 5.pdf uncompress $ pdftk 3.pdf output 3comp.pdf compress $ ls -l 3.pdf 3comp.pdf 5.pdf -rwxrwx--- 1 root plugdev 8652269 2011-07-30 12:27 3comp.pdf -rwxrwx--- 1 root plugdev 8652319 2011-07-29 22:15 3.pdf -rwxrwx--- 1 root plugdev 16829828 2011-07-30 12:27 5.pdf
文件的屬性表明它們都沒有被優化。 2. 轉ps再轉pdf的結果:
$ pdf2ps 3.pdf 3.ps $ ps2pdf 3.ps 3c.pdf $ ls -l 3.pdf 3.ps 3c.pdf -rwxrwx--- 1 root plugdev 8808946 2011-07-30 13:14 3c.pdf -rwxrwx--- 1 root plugdev 8652319 2011-07-29 22:15 3.pdf -rwxrwx--- 1 root plugdev 122375966 2011-07-30 13:14 3.ps
簡而言之:
要知道它是否已經壓縮:
strings your.pdf | grep /Filter
要(解)壓縮 PDF,請使用QPDF
qpdf --stream-data=compress your.pdf compressed.pdf qpdf --stream-data=uncompress compressed.pdf uncompressed.pdf
解釋:
pdf 文件中的“Filter”關鍵字是所使用的壓縮方法的指標。他們之中有一些是:
CCITT G3/G4 – 用於單色圖像
JPEG – 一種用於圖像的有損算法
JPEG2000 – JPEG 的更現代替代方案,也用於壓縮圖像
Flate – 用於壓縮文本和圖像
JBIG2 – 替代單色圖像的 CCITT 壓縮
LZW - 用於壓縮文本和圖像,但被 Flate 取代
RLE - 用於單色圖像
ZIP - 用於灰度或彩色圖像
(從這裡複製)。
然而,鑑於 PDF 複雜的文件結構,大多數時候 PDF 的某些部分(或“流”)已經以某種方式被壓縮(並且會在 grepping /Filter 時顯示),而其他部分則不會,所以PDF是否被壓縮的問題沒有是/否的答案。
克服這個問題的一種方法是將
-c
選項添加到 grep,它返回出現的次數,因此您可以相對地看到它的壓縮程度。例如,如果返回小於 10,則它是非常未壓縮的。strings
"large
.pdf" | grep -c /Filter
另一個與 PDF 大小有關的屬性是,它們是否已針對快速訪問進行了優化,“優化”的 PDF 的大小更大,引用自維基百科:
PDF 文件有兩種佈局——非線性(未“優化”)和線性(“優化”)。非線性 PDF 文件比線性 PDF 文件消耗更少的磁碟空間,儘管它們的訪問速度較慢,因為組裝文件頁面所需的部分數據分散在整個 PDF 文件中。線性 PDF 文件(也稱為“優化”或“網路優化”PDF 文件)的構造方式使得它們能夠在 Web 瀏覽器外掛中讀取,而無需等待整個文件下載,因為它們以線性(如頁面順序)時尚。PDF 文件可以使用 Adobe Acrobat 軟體或 QPDF 進行優化。
您可以使用 . 檢查 PDF 是否經過優化
pdfinfo your.pdf
。