Come posso ridurre le dimensioni del file di un file PDF scansionato?

311

Ho un file PDF da 72,9 MB che devo ridurre a meno di 500 KB.

Il file era un'immagine JPEG che avevo scansionato e poi convertito in pdf.

    
posta tamimym 16.03.2012 - 18:12
fonte

20 risposte

124

aking1012 ha ragione. Con più informazioni riguardanti possibili immagini incorporate, collegamenti ipertestuali ecc. Sarebbe molto più facile rispondere a questa domanda!

Ecco un paio di soluzioni per script e da riga di comando. Usa come meglio credi.

risposta data v2r 16.03.2012 - 18:28
fonte
433

Utilizza il seguente comando ghostscript :

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
  • -dPDFSETTINGS=/screen qualità inferiore, dimensioni più piccole. ( 72 dpi )
  • -dPDFSETTINGS=/ebook per una migliore qualità, ma pdf leggermente più grandi. ( 150 dpi )
  • % output di co_de% simile all'impostazione di "Prepress ottimizzato" di Acrobat Distiller ( 300 dpi )
  • -dPDFSETTINGS=/prepress seleziona l'output simile all'impostazione "Stampa ottimizzata" di Acrobat Distiller ( 300 dpi )
  • -dPDFSETTINGS=/printer seleziona l'output destinato a essere utile in un'ampia varietà di usi, probabilmente a spese di un file di output più grande
risposta data Michael D 15.02.2013 - 14:53
fonte
127

Il mio modo preferito per farlo è convertire il pdf in ps e viceversa. Tuttavia, non funziona sempre, ma quando funziona i risultati sono buoni:

ps2pdf input.pdf output.pdf

Anche questo funziona direttamente sui pdf, come suggerito nei commenti.

    
risposta data don.joey 16.01.2013 - 10:18
fonte
108

Se disponi di un pdf con immagini scansionate , puoi utilizzare convert per creare un pdf con compressione jpeg (puoi utilizzare questo metodo su qualsiasi pdf, ma perderai tutte le informazioni di testo)

Ad esempio:

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

Modifica densità (ad esempio 100x100) e qualità per le tue esigenze.

A seconda del tuo input, la compressione di jpeg potrebbe non essere la scelta migliore a causa degli artefatti di compressione. È possibile scegliere tra BZip, Fax, Group4, JPEG, JPEG2000, Lossless, LZW, RLE o Zip come metodi di compressione alternativi (alcuni consentono solo immagini b / n). Per i dettagli vedi qui .

Sono riuscito a ottenere ottimi rapporti di compressione per i documenti scansionati / fotografati (a seconda delle impostazioni). A seconda dell'origine del documento, potresti voler ridurre la profondità del colore (argomento -depth ).

    
risposta data someonr 19.05.2014 - 19:39
fonte
33

Avevo bisogno di ridimensionare un PDF che contenesse scansioni a colori di un documento. Ciascuna delle mie pagine era un'immagine a colori per quanto riguardava il file. Erano immagini di pagine contenenti testo e immagini, ma sono state create mediante la scansione su un'immagine.

Ho usato una combinazione del seguente comando ghostscript e uno da un altro thread.

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

Ciò ha ridotto la risoluzione dell'immagine a 150 dpi, riducendo la dimensione del file a metà. Guardando il documento, non c'era quasi nessuna perdita evidente di qualità dell'immagine. Il testo è ancora perfettamente leggibile sul mio Nexus7 2012.

    
risposta data mlitty 19.01.2014 - 07:25
fonte
26

Ecco uno script per la riscrittura dei PDF scansionati:

#!/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

Potresti personalizzarlo un po 'per renderlo più riutilizzabile, ma se hai solo un pdf, puoi semplicemente sostituire $1 con il tuo nome file pdf e inserirlo in un terminale.

    
risposta data Oli 31.08.2010 - 22:29
fonte
18

Di solito uso ps2pdf per fare questo (sintassi più semplice), qualcosa del genere:

ps2pdf -dPDFSETTINGS=/ebook BiggerPdf SmallerPDF

Uso il seguente script python per ridurre la dimensione di tutti i file pdf in una directory di un server di produzione (8.04). Quindi dovrebbe funzionare.

#!/usr/bin/python

import os

for fich in os.listdir('.'):
        if fich[-3:]=="pdf":
                os.system("ps2pdf -dPDFSETTINGS=/ebook %s reduc/%s" % (fich,fich))
    
risposta data Javier Rivera 01.09.2010 - 09:26
fonte
14
  1. Uso LibreOffice Draw per aprire il pdf.
  2. Quindi "esporta come pdf"
  3. E impostare "qualità compressione jpeg" su 50% e "risoluzione immagine" su 150 dpi

Questo avrà un buon risultato.

    
risposta data Marius4674 14.06.2016 - 11:59
fonte
8

Il migliore per me era

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

Altri modi:

#### 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

Per quanto riguarda

    
risposta data oxidworks 21.04.2016 - 13:03
fonte
5

Ho appena incontrato questo problema me stesso. Se si utilizza la scansione semplice, selezionare la modalità testo per scansioni a bassa risoluzione e non sarà necessario preoccuparsi della roba della riga di comando. Sto solo dicendo.

    
risposta data user179584 29.07.2013 - 23:13
fonte
3

Dato che questo link è stato il primo per me quando ho cercato su Google, ho pensato di aggiungere un'altra possibilità. Nessuna delle soluzioni di cui sopra funzionava per me su un PDF esportato da Inkscape (15 mb), ma alla fine sono riuscito a ridurlo a 1 mb aprendolo in GIMP ed esportandolo nuovamente in formato pdf.

Un'altra opzione che si avvicinava (ma il testo era un po 'sfocato) era l'utilità di conversione di ImageMagick:

convert -compress Zip input.pdf output.pdf
    
risposta data mbroshi 13.02.2014 - 13:32
fonte
3

Alla fine ho scritto il mio script bash per risolvere questo problema, utilizza mogrify , convert e gs per estrarre pagine PDF come png, ridimensionarle, convertirle in bmp da 1 bit e quindi ricostruirle come pdf. La riduzione della dimensione del file può essere superiore al 90%. Disponibile all'indirizzo link .

    
risposta data scoobydoo 21.09.2016 - 14:15
fonte
3

Controlla la qualità della compressione:

#!/bin/sh
INPUT=$1; shift
OUTPUT=$1; shift
GS_BIN=/usr/bin/gs
QFACTOR="0.40"

# Image Compression Quality
#
# Quality HSamples VSamples QFactor
# Minimum [2 1 1 2] [2 1 1 2] 2.40
# Low     [2 1 1 2] [2 1 1 2] 1.30
# Medium  [2 1 1 2] [2 1 1 2] 0.76
# High    [1 1 1 1] [1 1 1 1] 0.40
# Maximum [1 1 1 1] [1 1 1 1] 0.15 

${GS_BIN} -dBATCH -dSAFER -DNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=${OUTPUT} -c "<< /ColorImageDict << /QFactor ${QFACTOR} /Blend 1 /HSample [1 1 1 1] /VSample [1 1 1 1] >> >> setdistillerparams" -f ${INPUT}
    
risposta data user525719 02.04.2016 - 06:11
fonte
1

Se la conversione a djvu sarebbe anche ok e se non sono coinvolti colori, potresti provare quanto segue:

Converti i file pdf in jpg utilizzando pdfimages -j

Se ottieni invece file pbm, dovresti eseguire il passaggio intermedio:

for FILENAME in $(ls *.pbm); do convert $FILENAME ${FILENAME%.*}.jpg ;done

Il comando convert è dal pacchetto imagemagick.

Quindi usa scantailor per farne fuori tif.

In un ultimo passaggio devi andare in direzione laterale (dove si trovano i tif) e applicare djvubind a quella directory.

Questo dovrebbe ridurre drasticamente la dimensione del file senza una grande perdita di qualità del testo. Se vuoi un controllo più preciso su ocr-backend, puoi provare djvubind --no-ocr e usare ocrodjvu per aggiungere successivamente il livello ocr.

Se nel tuo documento ci sono dei colori le cose diventano un po 'più complicate. Invece di djvubind puoi utilizzare didjvu e in scantailor devi passare alla modalità mista e selezionare a volte le immagini a colori manualmente.

    
risposta data student 11.09.2011 - 10:43
fonte
1

carica l'immagine o anche il file pdf in inkscape.

Da inkscape: salva in formato vettoriale (come .svg nativo).

Importa file vettoriali in scribus, modifica layout ed esporta / salva come .pdf da lì

    
risposta data ape 28.07.2013 - 22:45
fonte
1

Stavo affrontando lo stesso problema, ed ero felice di trovare questa discussione. In particolare ho avuto un pdf generato da immagini scansionate, e aveva bisogno di ridurre la sua dimensione in byte di un fattore di 6.

Sfortunatamente, nessuna delle soluzioni sopra ha funzionato :(. Poi mi sono reso conto che da qualche parte nel processo scanner- & gt; jpeg- & gt; pdf la dimensione della pagina era gonfiata da un fattore di aprx 4. I documenti che ho scansionato erano tutti di dimensioni Letter, ma il pdf aveva dimensioni di

identify -verbose doc_orig.pdf | grep "Print size"
 Print size: 35.4167x48.7222

Ho ottenuto finalmente i risultati desiderati con un comando "convert" che ha eseguito sia il ridimensionamento sia i passaggi di compressione in uno:

convert -density 135x135 -quality 70 -compress jpeg -resize 22.588% doc_orig.pdf doc_lowres.pdf

Nota che doc_orig aveva una densità di 72x72 dpi.

    
risposta data Kalpit 20.03.2016 - 12:56
fonte
0

Strumento di compressione PDF super semplice: pagina GitHub

Installazione su Ubuntu:

sudo add-apt-repository ppa:jfswitz/released

sudo apt-get update

sudo apt-get install pdf-compressor

Usa ghostscript.

    
risposta data John 12.10.2015 - 14:39
fonte
0

Recentemente ho scoperto e consiglio vivamente pdfsizeopt .

È molto più efficiente di qualsiasi altro software CLI e GUI che ho provato (incluso convert , gs , pdftk , ecc.) - anche se forse più lento con pngout attivato - e fa non hanno alcuni dei loro problemi (nessuna immagine pesantemente alterata / degradata, nessuna perdita di segnalibri, ecc.).

Raccomando l' installazione Unix generica :

  1. Installa tutte le dipendenze richieste:

  2. Scarica e installa l'eseguibile:

    curl -L -o https://raw.githubusercontent.com/pts/pdfsizeopt/master/pdfsizeopt.single
    cp pdfsizeopt.single /usr/local/bin/pdfsizeopt
    

Utilizzo:

pdfsizeopt original.pdf [compressed.pdf]
    
risposta data Serge B. 02.03.2018 - 15:37
fonte
0

Puoi provare questo:

$ time pdftk myFile.pdf output myFile__SMALLER.pdf compress
GC Warning: Repeated allocation of very large block (appr. size 16764928):
    May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 8384512):
    May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 11837440):
    May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 8384512):
    May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 33525760):
    May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 7254016):
    May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 34041856):
    May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 33525760):
    May lead to memory leak and poor performance.

real    0m23.677s
user    0m23.142s
sys     0m0.540s
$ du myFile*.pdf
108M    myFile.pdf
74M     myFile__SMALLER.pdf

È più veloce di gs ma in questo caso comprime fino al 30% per un file di input da 107.5MiB.

    
risposta data SebMa 09.08.2018 - 18:01
fonte
-2

Ho usato i comandi sottostanti ma non ha compresso sostanzialmente il mio file pdf. Alcune volte parte della porzione era annerita dopo la compressione.

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

  2. "ps2pdf -dPDFSETTINGS=/ebook %s %s" % (input_file_path, out_file_path)

Dopo aver vagato troppo sul web, non sono riuscito a trovare la giusta libreria di compressione. Mi sono imbattuto in pdfcompressor.com . Questo è semplicemente un sito fantastico. Comprime il pdf del 95% (15 Mb di file). Quindi ho usato selenio e Tor per automatizzare la compressione. Acquista il mio repository Github. [GITHUB] ( link )

    
risposta data Prince 08.05.2018 - 13:10
fonte

Leggi altre domande sui tag