¿Cómo puedo reducir el tamaño del archivo de un archivo PDF escaneado?

292

Tengo un archivo PDF de 72.9MB que necesito reducir a menos de 500KB.

El archivo era una imagen JPEG que había escaneado y luego convertido a pdf.

    
pregunta tamimym 16.03.2012 - 18:12

20 respuestas

119

aking1012 tiene razón. Con más información sobre posibles imágenes incrustadas, hipervínculos, etc. ¡sería mucho más fácil responder a esta pregunta!

Aquí hay un par de soluciones de script y línea de comandos. Úselo como mejor le parezca.

respondido por el v2r 16.03.2012 - 18:28
404

Utilice el siguiente comando ghostscript :

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
  • -dPDFSETTINGS=/screen calidad inferior, tamaño más pequeño. ( 72 ppp )
  • -dPDFSETTINGS=/ebook para una mejor calidad, pero un poco más grande pdfs. ( 150 ppp )
  • -dPDFSETTINGS=/prepress output similar a Acrobat Distiller configuración "Prepress Optimized" ( 300 dpi )
  • -dPDFSETTINGS=/printer selecciona una salida similar a la configuración "Print Optimized" de Acrobat Distiller ( 300 dpi )
  • -dPDFSETTINGS=/default selecciona la salida destinada a ser útil en una amplia variedad de usos, posiblemente a expensas de un archivo de salida más grande
respondido por el Michael D 15.02.2013 - 14:53
121

Mi forma favorita de hacer esto es convertir el pdf a ps y viceversa. Sin embargo, no siempre funciona, pero cuando funciona los resultados son agradables:

ps2pdf input.pdf output.pdf

Esto también funciona directamente en pdf, como se sugiere en los comentarios.

    
respondido por el don.joey 16.01.2013 - 10:18
103

Si tiene un pdf con imágenes escaneadas , puede usar convert para crear un pdf con compresión jpeg (Puede usar este método en cualquier PDF, pero perderás toda la información de texto).

Por ejemplo:

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

Ajuste densidad (por ejemplo, 100x100) y calidad según sus necesidades.

Dependiendo de su entrada, la compresión jpeg puede no ser la mejor opción debido a los artefactos de compresión. Puede elegir entre BZip, Fax, Group4, JPEG, JPEG2000, Lossless, LZW, RLE o Zip como métodos de compresión alternativos (algunos solo permiten imágenes en blanco y negro). Para más detalles, consulte aquí .

Pude lograr excelentes relaciones de compresión para documentos escaneados / fotografiados (según la configuración). Dependiendo de la fuente del documento, es posible que desee reducir la profundidad de color ( -depth argumento).

    
respondido por el someonr 19.05.2014 - 19:39
30

Necesitaba reducir el tamaño de un PDF que contenía escaneos a todo color de un documento. Cada una de mis páginas era una imagen a todo color en lo que respecta al archivo. Eran imágenes de páginas que contenían texto e imágenes, pero se crearon escaneando en una imagen.

Utilicé una combinación del comando debajo de ghostscript y uno de otro hilo.

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

Esto redujo la resolución de la imagen a 150 ppp, reduciendo el tamaño de mi archivo a la mitad. Al mirar el documento, casi no hubo una pérdida notable de calidad de imagen. El texto sigue siendo perfectamente legible en mi Nexus7 de 2012.

    
respondido por el mlitty 19.01.2014 - 07:25
24

Aquí hay un script para reescribir los pdfs escaneados:

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

Puedes personalizarlo un poco para que sea más reutilizable, pero si solo tienes un pdf, puedes simplemente reemplazar con tu nombre de archivo pdf y conectarlo a una terminal.

    
respondido por el Oli 31.08.2010 - 22:29
15

Normalmente uso ps2pdf para hacer esto (sintaxis más fácil), algo como esto:

ps2pdf -dPDFSETTINGS=/ebook BiggerPdf SmallerPDF

Utilizo el siguiente script de python para reducir el tamaño de todos los archivos PDF en un directorio en un servidor de producción (8.04). Entonces debería 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))
    
respondido por el Javier Rivera 01.09.2010 - 09:26
13
  1. Utilizo LibreOffice Draw para abrir el pdf.
  2. Luego "exportar como pdf"
  3. Y establezca "calidad de compresión jpeg" en 50% y "resolución de imagen" en 150 ppp

Esto tendrá un buen resultado.

    
respondido por el Marius4674 14.06.2016 - 11:59
6

Lo mejor para mí fue

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

Otras formas:

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

respeta     

respondido por el oxidworks 21.04.2016 - 13:03
5

Me acabo de encontrar con este problema yo mismo. Si utiliza un escaneo simple, seleccione el modo de texto para escaneos de baja resolución y no tendrá que preocuparse por las cosas de la línea de comando. Solo digo.

    
respondido por el user179584 29.07.2013 - 23:13
3

Como este enlace fue el primero para mí cuando busqué en Google, pensé que agregaría una posibilidad más. Ninguna de las soluciones anteriores me funcionaba en un pdf exportado desde Inkscape (15 mb), pero al menos pude reducirlo a 1 mb al abrirlo en GIMP y exportarlo nuevamente como PDF.

Otra opción que estuvo cerca (pero el texto era un poco confuso) fue la utilidad de conversión de ImageMagick:

convert -compress Zip input.pdf output.pdf
    
respondido por el mbroshi 13.02.2014 - 13:32
3

Al final escribí mi propio script bash para resolver esto, usa mogrify , convert y gs para extraer páginas pdf como png, cambiarles el tamaño, convertirlas a 1 bit y luego reconstruirlas como pdf. La reducción del tamaño del archivo puede ser superior al 90%. Disponible en enlace .

    
respondido por el scoobydoo 21.09.2016 - 14:15
2

Controle la calidad de la compresión:

#!/bin/sh
INPUT=; shift
OUTPUT=; 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}
    
respondido por el user525719 02.04.2016 - 06:11
1

Si la conversión a djvu también estaría bien y si no hay colores involucrados, podría intentar lo siguiente:

Convierta archivos pdf a jpg utilizando pdfimages -j

Si obtiene archivos pbm, debe hacer el paso intermedio:

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

El comando de conversión es del paquete imagemagick.

Luego, use scantailor para eliminar los tif.

En un último paso vaya a scantailors out direcory (donde se encuentran los tif's) y aplique djvubind a ese directorio.

Esto debería reducir el tamaño del archivo drásticamente sin una gran pérdida de calidad del texto. Si desea un control más preciso sobre el ocr-backend, puede probar djvubind --no-ocr y usar ocrodjvu para agregar la capa de ocr después.

Si tiene color en su documento, las cosas se complican un poco. En lugar de djvubind , puede usar didjvu y en scantailor tienes que cambiar al modo mixto y seleccionar a veces imágenes en color manualmente.

    
respondido por el student 11.09.2011 - 10:43
1

carga la imagen o incluso el archivo pdf en inkscape.

De inkscape: guardar en formato vectorial (como el .svg nativo).

Importar archivos vectoriales en scribus, editar diseño y exportar / guardar como .pdf desde allí

    
respondido por el ape 28.07.2013 - 22:45
1

Me enfrentaba al mismo problema y me alegré de encontrar este hilo. Concretamente, obtuve un pdf generado a partir de imágenes escaneadas, y necesitaba reducir su tamaño de bytes en un factor de 6.

Desafortunadamente, ninguna de las soluciones anteriores funcionó :(. Entonces me di cuenta de que en algún lugar del proceso escaner-& gt; jpeg- & gt; pdf el tamaño de la página se había hinchado por un factor de aprx 4. Los documentos que escaneé eran todos de tamaño Carta, pero el pdf tenía el tamaño de

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

Obtuve finalmente los resultados deseados con un comando "convertir" que hacía tanto el cambio de tamaño como los pasos de compresión en uno:

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

Tenga en cuenta que doc_orig tenía una densidad de 72x72 ppp.

    
respondido por el Kalpit 20.03.2016 - 12:56
0

Herramienta de compresión PDF súper simple: página de GitHub.

Instalación en Ubuntu:

sudo add-apt-repository ppa:jfswitz/released

sudo apt-get update

sudo apt-get install pdf-compressor

Utiliza ghostscript.

    
respondido por el John 12.10.2015 - 14:39
0

Recientemente descubrí y recomiendo pdfsizeopt .

Es mucho más eficiente que cualquiera de los programas CLI y GUI anteriores que he probado (incluyendo convert , gs , pdftk , etc.) - aunque posiblemente sea más lento con pngout activado - y lo hace no tiene algunos de sus problemas (no hay imágenes altamente pixeladas / degradadas, no hay pérdida de marcadores, etc.).

Recomiendo la instalación genérica de Unix :

  1. Instala todas las dependencias requeridas:

  2. Descargue e instale el ejecutable:

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

Uso:

pdfsizeopt original.pdf [compressed.pdf]
    
respondido por el Serge B. 02.03.2018 - 15:37
0

Puedes probar esto:

$ 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

Es más rápido que gs pero se comprime hasta 30% en este caso para un archivo de entrada de 107.5MiB.

    
respondido por el SebMa 09.08.2018 - 18:01
-2

Utilicé comandos a continuación, pero no comprimió sustancialmente mi archivo pdf. Algunas veces, parte de la porción se ennegró después de la compresión.

  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)

Después de demasiado vagar por la web, no pude encontrar la biblioteca de compresión correcta. Encontré pdfcompressor.com . Este es un sitio web increíble. Comprime el pdf en un 95% (15Mb de archivos). Entonces usé selenio y Tor para automatizar la compresión. Revisa mi Repositorio de Github. [GITHUB] ( enlace )

    
respondido por el Prince 08.05.2018 - 13:10

Lea otras preguntas en las etiquetas