Como saber se um arquivo pdf está comprimido ou não e (un) compactá-lo

16

Acabei de aprender que arquivos PDF podem ser compactados para reduzir o tamanho do disco.

  1. Eu queria saber como saber se um arquivo pdf já foi compactado?
  2. Quais aplicativos / comandos podem ser usados para compactar ou descompactar um arquivo pdf?

Meu ambiente é Linux Ubuntu 10.10.

Algumas tentativas não dão resultados satisfatórios:

  1. Aqui estão os resultados da tentativa do 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
    

    As propriedades dos arquivos mostram que nem todas são otimizadas.

  2. Resultados da conversão para ps e depois de volta para o 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
    
por Tim 30.07.2011 / 14:41

4 respostas

25

em resumo:

Para saber se já está comprimido:

strings your.pdf | grep /Filter

Para (un) compactar um PDF, use QPDF

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

explicação:

A palavra-chave "Filtro" dentro de um arquivo pdf é um indicador do método de compactação usado. Alguns deles são:

CCITT G3/G4 – used for monochrome images
JPEG – a lossy algorithm that is used for images
JPEG2000 – a more modern alternative to JPEG, which is also used for compressing images
Flate – used for compressing text as well as images
JBIG2 – an alternative to CCITT compression for monochrome images
LZW – used for compressing text as well as images but getting replaced by Flate
RLE – used for monochrome images
ZIP – used for grayscale or color images

(copiado de aqui ).

No entanto, dada a complexa estrutura de arquivos PDF, na maioria das vezes alguma parte (ou "stream") do PDF será compactada de alguma forma (e aparecerá quando grepping / Filter) enquanto outra parte não será Portanto, não há resposta SIM / NÃO à pergunta sobre se o PDF está compactado.
Uma maneira de superar isso seria adicionar a opção -c ao grep, que retorna o número de ocorrências, assim você pode ver relativamente quão bem ela é compactada. por exemplo, se strings "large .pdf" | grep -c /Filter retornar menos de 10, ela é bastante não compactada.

Outra propriedade relacionada ao tamanho em PDFs é se eles foram otimizados para acesso rápido, com os PDFs "otimizados" sendo maiores em tamanho, para citar wikipedia :

There are two layouts to the PDF files—non-linear (not "optimized") and linear ("optimized"). Non-linear PDF files consume less disk space than their linear counterparts, though they are slower to access because portions of the data required to assemble pages of the document are scattered throughout the PDF file. Linear PDF files (also called "optimized" or "web optimized" PDF files) are constructed in a manner that enables them to be read in a Web browser plugin without waiting for the entire file to download, since they are written to disk in a linear (as in page order) fashion. PDF files may be optimized using Adobe Acrobat software or QPDF.

Você pode verificar se o PDF está otimizado usando pdfinfo your.pdf .

    
por 31.07.2011 / 00:56
10

O pdftk é uma ferramenta para executar algumas operações em arquivos PDF, como compactação / descompressão:

$ pdftk test.pdf output compressed_test.pdf compress
    
por 30.07.2011 / 15:00
0

Basta verificar suas propriedades; ele dirá se o arquivo está compactado ou não.

    
por 30.07.2011 / 17:46
0

Eu encontrei o método de compressão no arquivo pdf. Abra o PDF com o editor de texto. Executar uma pesquisa ou localizar-centre CCITT se não for encontrado, digite JPEG, em seguida, Flate, em seguida, JBIG2, em seguida, LZW, em seguida, RLE e, em seguida, ZIP. Soa pior do que é! Muito fácil de encontrar o método de compressão do fluxo de dados.

Espero que isso ajude! Obrigado pelo post ...

    
por 15.08.2013 / 19:35

Tags