Bir PDF dosyasının sıkıştırılıp sıkıştırılmadığı ve sıkıştırılmasının (un) sıkıştırılması


18

PDF dosyalarının disk boyutlarını küçültmek için sıkıştırılabileceğini öğrendim.

  1. Bir PDF dosyasının önceden sıkıştırılmış olup olmadığını nasıl bilebilirim?
  2. Bir PDF dosyasını sıkıştırmak veya açmak için hangi uygulamalar / komutlar kullanılabilir?

Ortamım Linux Ubuntu 10.10.


Bazı denemeler tatmin edici sonuçlar vermez:

  1. İşte denemenin sonuçları 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
    

    Dosyaların özellikleri, hepsinin optimize edilmediğini gösterir.

  2. Ps ve sonra pdf'ye dönüştürme sonuçları:

    $ 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
    

Şu anda test edemiyorum, çünkü elimde sıkıştırılmış bir PDF yok, ama deneyin file. Dosyanın sıkıştırılıp sıkıştırılmadığını göstermelidir.
polemon

1
@polemon: Teşekkürler! Öyle değil. Dışına koymak $file 3.pdfolduğunu3.pdf: PDF document, version 1.4
Herkes İçin Stack Exchange

O Not bireysel akışları PDF dosyasına sıkıştırılabilir. Bu yüzden "PDF dosyasının tamamı sıkıştırılmış mı?" Sorusu yanlış bir sorudur (çoğu durumda tümü veya çoğu akış sıkıştırılmış veya sıkıştırılmamış olsa da).
dirkt

Yanıtlar:


30

Kısacası:

Sıkıştırılmış olup olmadığını bilmek için:

strings your.pdf | grep /Filter

Bir PDF'yi sıkıştırmak ( açmak) için QPDF kullanın

qpdf --stream-data=compress your.pdf compressed.pdf
qpdf --stream-data=uncompress compressed.pdf uncompressed.pdf  

açıklama:

Bir pdf dosyasının içindeki "Filter" anahtar sözcüğü, kullanılan sıkıştırma yönteminin bir göstergesidir. Onlardan bazıları:

CCITT G3 / G4 - tek renkli görüntüler için kullanılır
JPEG - görüntüler için kullanılan kayıplı bir algoritma
JPEG2000 - görüntüleri sıkıştırmak için de kullanılan
JPEG'e daha modern bir alternatif Flate - metinlerin yanı sıra görüntüleri sıkıştırmak için de kullanılır
JBIG2 - Tek renkli görüntüler için CCITT sıkıştırması
LZW - metinlerin yanı sıra görüntüleri sıkıştırmak için kullanılır ancak yerine Flate
RLE kullanılır - tek renkli görüntüler
için kullanılır ZIP - gri tonlamalı veya renkli görüntüler için kullanılır

( buradan kopyalanır ).

Bununla birlikte, PDF karmaşık dosya yapısı göz önüne alındığında, çoğu zaman PDF'nin bir kısmı (veya "akışı") zaten bir şekilde sıkıştırılır (ve selamlama / Filtreleme sırasında görünecektir), ancak diğer kısmı olmayacaktır. PDF'nin sıkıştırılıp sıkıştırılmadığı sorusuna EVET / HAYIR yanıtı yoktur.
Bunun üstesinden gelmenin bir yolu -c, olay sayısını döndüren grep seçeneğini eklemek olacaktır , böylece nispeten ne kadar iyi sıkıştırıldığını görebilirsiniz. örneğin, 10'dan daha az döndürürse , sıkıştırılmamış olur.strings "large.pdf" | grep -c /Filter

PDF'lerde boyutla ilgili bir başka özellik, "optimize edilmiş" PDF'lerin wikipedia'dan alıntı yapmak için boyut olarak daha büyük olmasıyla hızlı erişim için optimize edilmiş olup olmadıklarıdır :

PDF dosyalarında doğrusal olmayan ("optimize edilmemiş") ve doğrusal ("optimize edilmiş") olmak üzere iki düzen vardır. Doğrusal olmayan PDF dosyaları, doğrusal sayfalarına göre daha az disk alanı tüketir, ancak belgenin sayfalarını birleştirmek için gereken verilerin bazı bölümleri PDF dosyası boyunca dağıldığından, erişimleri daha yavaştır. Doğrusal PDF dosyaları ("optimize edilmiş" veya "web optimize edilmiş" PDF dosyaları olarak da bilinir), bir dosyanın içindeki diske yazıldıklarından, dosyanın tamamını indirmesini beklemeden Web tarayıcı eklentisinde okunmalarını sağlayacak şekilde oluşturulur. doğrusal (sayfa sırasına göre) moda. PDF dosyaları Adobe Acrobat yazılımı veya QPDF kullanılarak optimize edilebilir.

PDF'yi kullanarak optimize edilmiş olup olmadığını kontrol edebilirsiniz pdfinfo your.pdf.


Teşekkürler! (1) qpdf kullanmanın sonuçları pdftk kullanmaya benzer: sıkıştırma ile, boyut aslında biraz daha büyük (garip) hale geldi ve sıkıştırmayla, boyut çok daha büyük, neredeyse iki katına çıktı. (2) pdftk ve gpdf sıkıştırma ve açma seçeneklerini kullanarak aynı şeyi yapmaya çalışıyor mu?
Tüm

@Tim: (üzgünüm burada değildim). (1) için, açıkladığım gibi, PDF zaten kısmen sıkıştırılmış (büyük olasılıkla), bu yüzden sıkıştırma çok fazla tasarruf etmiyor, (ve sıkıştırmayı açmak daha büyük hale getiriyor, çünkü tüm sıkıştırılmış akışları açıyor). (2) büyük olasılıkla qpdfve pdftksıkıştırma ile ilgili aşağı yukarı aynı şeyi yapın, ancak qpdfçok da optimize edebilir (artı daha fazla şey).
Philomath

10

pdftk , PDF dosyalarında sıkıştırma / açma gibi bazı işlemleri gerçekleştiren bir araçtır:

$ pdftk test.pdf output compressed_test.pdf compress

Teşekkürler! Ben zaten bir pdf dosyası sıkıştırılmış olup olmadığını bilmek merak ediyordum?
Herkes İçin Stack Exchange

1
@Tim: pdfinfo file.pdfPDF'nin optimize edilip edilmediğini gösterir . Ancak bunun sıkıştırılmış olup olmadığı konusunda emin değilim.
nico

1
@uloBasEI: Komutunuzu sıkıştırma için pdftk kullanarak denedim, ancak boyut neredeyse değişmedi. Sıkıştırırsam, dosya boyutu iki katına çıkar. Orijinal dosyanın, sıkıştırılmış dosyanın ve sıkıştırılmamış dosyaların özellikleri, bunların optimize edilmediğini gösterir.
Herkes İçin Stack Exchange

@nico: Teşekkürler! Yukarıdaki yorumuma ve güncellememe bakın. Sıkıştırma ve optimizasyon birbirini ima etmiyor mu?
Herkes İçin Stack Exchange


1

Sıkıştırma yöntemini pdf dosyasında buldum. PDF'yi metin düzenleyiciyle açın. Bulunamazsa, bir Arama veya Bul-merkezi CCITT çalıştırın, JPEG, ardından Flate, sonra JBIG2, sonra LZW, sonra RLE ve sonra ZIP girin.
Kulağa olduğundan daha kötü geliyor! Veri akışının sıkıştırma yöntemini bulmak çok kolay.


Bu oldukça havalı. Ben (qpdf tarafından sıkıştırılmamış) kullanarak dosya sıkıştırılmamış PDF kontrol etmek için yöntem kullanılır grep gibi grep -E "(| JPEG | Flate | LZW | RLE | CCITT ZIP)" uncompressed.pdf ve bu mesajı döndürür İkili dosya uncompressed.pdf eşleşir . Görünüşe göre uncompressed.pdf dosyasının hem LZW hem de RLE desenlerini içerdiğini algıladı.
user91822

-1

Sadece özelliklerini kontrol edin; dosyanın sıkıştırılıp sıkıştırılmadığını söyleyecektir.


Ben soru Heidi, özellikle komut dosyası tabanlı komut satırı programları ile özelliklerini kontrol etmek için hangi program olduğunu düşünüyorum.
Caleb

> Sadece özelliklerini kontrol edin - hangi [açık kaynak] programı bir bunu yapmak için kullanabilirsiniz?
Maxim
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.