Questão Como posso reduzir o tamanho do arquivo de um arquivo PDF digitalizado?


Eu tenho um arquivo PDF 72,9MB que eu preciso para encolher abaixo de 500KB.

O arquivo era uma imagem JPEG que eu havia escaneado e convertido para pdf.


294
2018-03-16 17:12


origem


depende do que consome o espaço ... precisa de muito mais informação. A compactação do espaço da imagem pode ajudar, mas se você estiver tentando usar um grande spray de heap, isso não funcionará. seriamente precisa de mais informações. - RobotHumans
convertê-lo para DjVu, em vez de tentar reduzir a PDF tamanho impossível (de acordo com a fonte) - zetah
o arquivo era uma imagem jpeg que eu tinha escaneado e depois convertido para pdf. - tamimym
Parece apenas ajudar a compactar um pouco, mas pdfopt tem uma sintaxe simples e melhora a velocidade de carregamento e de virada de página na era do iPad. :-) - Ari B. Friedman
PDF para PS não é eficaz no arquivo PDF digitalizado, eu tento converter 56 MB pdf em ps arquivo, mas ps converter arquivo em 1.3 GB e novamente ps2pdf é convertido em 45 MB de arquivo


Respostas:


aking1012 está certo. Com mais informações sobre possíveis imagens incorporadas, hiperlinks, etc., seria muito mais fácil responder a esta pergunta!

Aqui estão algumas soluções de script e linha de comando. Use como achar melhor.


119
2018-03-16 17:28



Muito obrigado por suas sugestões, o shell ghostscript trabalhou maravilhas e encolheu para 460KB :) - tamimym
Isso não é necessariamente verdade. Se o conteúdo passou de uma imagem para texto, isso é mais do que fiável. [Isso é supondo que o texto é precisamente ocred] - monksy
Eu recomendo o script shrinkpdf.sh, você pode personalizar o código para usar o valor de ppi que você quer (72 por padrão) e alcançar exatamente o tamanho do arquivo que você precisa para sacrificar a menor qualidade. Isso me fez conseguir fazer o upload de um documento digitalizado de 11 MB com um máximo de tamanho de 3 MB sem perder muita qualidade. - Severo Raz
shrinkpdf funciona muito bem! - AmanicA
O primeiro link, com a configuração "/ ebook", reduziu um arquivo digitalizado de 19 MB para 4,2 MB e o texto digitalizado permanece legível. - dremodaris


Use o seguinte ghostscript comando:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
  • -dPDFSETTINGS=/screen qualidade inferior, tamanho menor. (72 dpi)
  • -dPDFSETTINGS=/ebook para melhor qualidade, mas pdfs ligeiramente maiores. (150 dpi)
  • -dPDFSETTINGS=/prepress saída semelhante à configuração "Prepress Optimized" do Acrobat Distiller (300 dpi)
  • -dPDFSETTINGS=/printer seleciona uma saída semelhante à configuração "Otimizado para impressão" do Acrobat Distiller (300 dpi)
  • -dPDFSETTINGS=/default seleciona saída destinada a ser útil em uma ampla variedade de usos, possivelmente às custas de um arquivo de saída maior

407
2018-02-15 13:53



Também é possível criar um script do Nautilus para acessar essa função em todos os arquivos. - Sina
Essa deve ser a resposta aceita. ghostscript é a Implementação de PDF, XPS e PS para unices e pode fazer basicamente tudo fornecendo a melhor qualidade ... - dom0
@Sina: Na verdade, existe um Script Nautilus com uma GUI simples baseada no Zenity que utiliza este comando gs com todas as suas opções de nível de qualidade: launchpad.net/compress-pdf - Sadi
Esta é a resposta certa para esta questão (comprimir um pdf que é principalmente dados de bitmap). Eu achei que o screen definição foi muito baixa qualidade para mim, mas ebook funcionou bem, cortando um PDF baseado em digitalização de 33Mb para 3.6Mb e mantendo-o muito legível. Outras opções para o -dPDFSETTINGS opção estão listados aqui: milan.kupcevic.net/ghostscript-ps-pdfe pode ser uma boa ideia incluí-los nesta resposta. - naught101
gs parâmetros de configuração disponíveis: ghostscript.com/doc/current/Ps2pdf.htm - Antonios Hadjigeorgalis


Minha maneira favorita de fazer isso é converter o pdf para ps e vice-versa. Nem sempre funciona, mas quando funciona os resultados são bons:

ps2pdf input.pdf output.pdf

Isso também funciona diretamente em pdf, como sugerido nos comentários.


123
2018-01-16 09:18



Esta é uma maneira muito simples e eficaz de fazer isso. Fiquei surpreso ao ver o quanto esse método compactou os arquivos. Te agradece! - Gabriel
Apesar do fato de que essa abordagem se tornou minha solução favorita para compactar arquivos PDF, ela quebra links de url que o documento pode ter (o que não acontece com a abordagem do @Michael D). Além disso, a grandiosidade é tudo o que posso pensar em executar este trecho! (: - Rubens
@Rubens Ah. Não sabia sobre o fato de que ele quebra os links de url. Obrigado por adicionar isso. - don.joey
Isso ignora a proteção por senha ... apenas dizendo - jojo
ps2pdf terá pdfs como entradas, então você pode fazer isso em uma única etapa: ps2pdf intput.pdf output.pdf - frabjous


Se você tem um pdf com imagens digitalizadas, você pode usar convert para criar um pdf com compressão jpeg (Você pode usar este método em qualquer pdf, mas você perderá todas as informações de texto).

Por exemplo:

convert -density 200x200 -quality 60 -compress jpeg input.pdf output.pdf

Ajustar densidade (por exemplo, 100x100) e qualidade às suas necessidades.

Dependendo do seu jpeg de entrada compressão pode não ser a melhor escolha devido a artefatos de compactação. Você tem a opção entre BZip, Fax, Grupo4, JPEG, JPEG2000, Lossless, LZW, RLE ou Zip como métodos de compactação alternativos (alguns permitem apenas imagens em preto e branco). Para detalhes veja Aqui.

Consegui atingir ótimas taxas de compactação para documentos digitalizados / fotografados (dependendo das configurações). Dependendo da origem do documento, talvez você queira reduzir a profundidade de cores (-depth argumento).


106
2018-05-19 17:39



Para um documento digitalizado em que o texto é o que você está interessado, em vez de as imagens e preservar a profundidade não é um problema, a compactação jpeg não é uma boa ideia, porque os artefatos tendem a ser extremamente perceptíveis. Se você usar pdfimages input.pdf pages para extrair arquivos pbm, então você pode fazer algo como: for page in *.pbm; do convert $page -compress Group4 -type bilevel TIFF:- | convert - output.pdf. Qualquer OCR será perdido, então eu geralmente faço pdfsandwich output.pdf, o que parece reduzir ainda mais o tamanho do arquivo. - Brian Z
@BrianZ certeza de compressão jpeg nem sempre é a melhor escolha, mas para mim foi a melhor abordagem para documentos de tipo misto. Eu adicionei algumas informações sobre outros métodos de compactação para a resposta. - someonr
Este método, em última análise, usa gs Por trás das cenas. - alfC
Eu tive que usar o traço duplo para as opções para executar o comando --density --quality --compress vs -density -quality -compress. - Rotareti
Se qaulity de imagem não é a maior preocupação (e você só quer pegar aquele anexo de e-mail pequeno o suficiente para ser enviado) pode-se adicionar -resize 50% também, altere a porcentagem dependendo de quanto DPI foi usado durante a digitalização - chrki


Eu precisava reduzir o tamanho de um PDF que continha varreduras coloridas de um documento. Cada uma das minhas páginas era uma imagem colorida no que dizia respeito ao arquivo. Eram imagens de páginas contendo texto e imagens, mas foram criadas digitalizando para uma imagem.

Eu usei uma combinação do comando abaixo ghostscript e um de outro thread.

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dDownsampleColorImages=true \
-dColorImageResolution=150 -dNOPAUSE  -dBATCH -sOutputFile=output.pdf input.pdf

Isso reduziu a resolução da imagem para 150 dpi, cortando o tamanho do meu arquivo pela metade. Olhando para o documento, quase não houve perda perceptível de qualidade de imagem. O texto ainda é perfeitamente legível no meu Nexus7 de 2012.


30
2018-01-19 06:25



+1 para imagens com amostragem reduzida, mas mantendo o texto como vetores. Fiz uma diferença enorme no lado sem tornar meu texto pixelizado. - Jason O'Neil


Aqui está um script para reescrever os PDFs digitalizados:

#!/bin/sh

gs  -q -dNOPAUSE -dBATCH -dSAFER \
    -sDEVICE=pdfwrite \
    -dCompatibilityLevel=1.3 \
    -dPDFSETTINGS=/screen \
    -dEmbedAllFonts=true \
    -dSubsetFonts=true \
    -dColorImageDownsampleType=/Bicubic \
    -dColorImageResolution=72 \
    -dGrayImageDownsampleType=/Bicubic \
    -dGrayImageResolution=72 \
    -dMonoImageDownsampleType=/Bicubic \
    -dMonoImageResolution=72 \
    -sOutputFile=out.pdf \
     $1

Você poderia personalizá-lo um pouco para torná-lo mais reutilizável, mas se você tivesse apenas um pdf, você poderia simplesmente substituir $1 com o seu nome de arquivo pdf e bung-lo em um terminal.


24
2017-08-31 20:29



Funciona um prazer, obrigado Oli. Você respondeu praticamente tudo o que eu pedi aqui até agora :-D - Rob Cowell
Esta é uma boa resposta, mas no meu caso, pelo menos, leva um muito de tempo para converter um arquivo PDF um tanto grande (> 10Mb) (mais de um minuto). - Gabriel
Não tenho certeza do que acontece, mas um PDF de 30 MB resulta em um arquivo de 68 MB. Em vez de reduzir, aumenta. Mesma saída se estiver usando diretamente ps2pdf como indicado na próxima resposta. - Ed Villegas
@EdVillegas A única coisa em que consigo pensar (para explicar esse tipo de aumento) é que as imagens são de resolução menor que aquelas geradas (72dpi). Ou de alguma forma, incorporar as fontes está sugando todos as fontes. - Oli♦


Eu costumo usar ps2pdf para fazer isso (sintaxe mais fácil), algo assim:

ps2pdf -dPDFSETTINGS=/ebook BiggerPdf SmallerPDF

Eu uso o seguinte script python para reduzir o tamanho de todos os arquivos PDF em um diretório em um servidor de produção (8.04). Então deveria funcionar.

#!/usr/bin/python

import os

for fich in os.listdir('.'):
        if fich[-3:]=="pdf":
                os.system("ps2pdf -dPDFSETTINGS=/ebook %s reduc/%s" % (fich,fich))

15
2017-09-01 07:26



Obrigado pela solução alternativa. Eu tentei o primeiro de Oli e ele me deu o resultado que eu precisava, mas vou manter este para referência futura também. - Rob Cowell
-dPDFSETTINGS = / opção de impressora faz redimensionar 50%. ebook faz 90% redimensionar. - neouyghur


  1. eu uso LibreOffice Draw para abrir o pdf.
  2. Eu então "exporto como pdf"
  3. E defina "qualidade de compressão jpeg" para 50% e "resolução de imagem" para 150 dpi

Isso terá um bom resultado.


13
2018-06-14 09:59



A pior solução possível para o problema! Isso bagunçou totalmente meu arquivo! - ThatIs


O melhor para mim foi

convert -compress Zip -density 150x150 input.pdf output.pdf

Outras maneiras:

#### gs
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf $INPUTFILE

### pdf2ps && ps2pdf
pdf2ps input.pdf output.ps && ps2pdf output.ps output.pdf

### Webservice
http://compress.smallpdf.com/de

Saudações


6
2018-04-21 11:03



bom resumo obrigado - Gery
Ótima solução. Fácil de lembrar e trouxe meu pdf de 32 para 3,5 MB sem perda sensível na legibilidade. - Immanuel Weihnachten