una - Reemplazar imágenes vectoriales en un PDF con imágenes de trama
pdf vectorial (8)
Convierta el pdf a djvu con el convertidor https://jwilk.net/software/pdf2djvu . Desmarque "fuentes antialias, vectores ...". Reducirá significativamente el tamaño del archivo y mejorará los tiempos de carga de documentos.
¿Hay alguna forma fácil (de secuencias de comandos) para convertir un PDF con imágenes vectoriales en un PDF con imágenes de trama? En otras palabras, quiero generar un PDF con el mismo texto exacto (no rasterizado) pero con cada imagen vectorial reemplazada por una versión rasterizada.
De vez en cuando leo PDFs de artículos técnicos en mi Kindle, y he descubierto que leer un PDF directamente es frustrante. Afortunadamente, la conversión automática de PDFs de Amazon al formato Kindle hace un buen trabajo al refinar las porciones de texto de la mayoría de los archivos PDF que he probado. Sin embargo, aunque las imágenes ráster parecen atravesar bien el proceso de conversión, las imágenes vectoriales se estropean horriblemente. Sería genial si pudiera convertir fácilmente un PDF para que todas sus imágenes vectoriales fueran rasterizadas.
Estoy interesado en posibles soluciones, pero sería preferible una basada en Linux o Windows.
Después de algunos días buscando alguna solución, basada en " Eliminar todo el texto del archivo PDF " y " Cómo agregar una imagen en un archivo PDF existente ", encontré una solución (fea) de secuencias de comandos:
gs -o /tmp/onlytxt.pdf -sDEVICE=pdfwrite -dFILTERVECTOR -dFILTERIMAGE $INPUT_FILE && /
gs -o /tmp/graphics.pdf -sDEVICE=pdfwrite -dFILTERTEXT $INPUT_FILE && /
convert -density $DPI -quality 100 /tmp/graphics.pdf /tmp/graphics.png && /
convert -density $DPI -quality 100 /tmp/graphics.png /tmp/graphics.pdf && /
pdftk /tmp/graphics.pdf stamp /tmp/onlytxt.pdf output $OUTPUT_FILE && /
rm /tmp/onlytxt.pdf /tmp/graphics.pdf /tmp/graphics.png
donde tenemos tres variables INPUT_FILE, OUTPUT_FILE, y DPI. Dividimos los contenidos textuales y gráficos a través de Ghostscript, convertimos la imagen gráfica a una imagen raster (PNG) y unimos los dos usando pdftk.
He estado usando esto con éxito para convertir imágenes vectoriales enormes para su uso en documentos científicos.
Es un poco complicado, pero pediste una posible solución. Además, esta solución no es automatizable.
1) Abra el pdf con las imágenes vectoriales en Inkscape
. A continuación, seleccione la imagen completa con la herramienta de select
( F1
)
2) Si la imagen vectorial es consistente con más de un gráfico svg presione Ctrl + G
(Objeto -> Grupo)
3) cortar la imagen SVG agrupada Ctrl + x
4) abra una nueva ventana de InkScape Ctrl + n
y pegue la imagen Ctrl + v
5) elija Archivo -> exportar mapa de bits ( Shift + Ctrl + e
), tal vez quiera aumentar los dpi
6) volver a la primera ventana de InkScape, Archivo -> importar ( Ctrl + i
) y elegir el mapa de bits previamente exportado
7) coloque el mapa de bits en la ubicación donde estaba la imagen svg
Guarde el pdf y la imagen vectorial se reemplaza por una imagen de mapa de bits.
Esta es una forma de resolver su problema:
Paso 1: utilice un convertidor de PDF a HTML en línea, como el que se muestra aquí:
http://www.idrsolutions.com/online-pdf-to-html5-converter/
Esta herramienta convierte el PDF en un conjunto de imágenes y una superposición de texto. Las imágenes vectoriales deberían convertirse a raster en este punto.
Paso 2: Convierta las imágenes HTML + nuevamente en PDF:
http://pdfcrowd.com/#convert_by_upload+with_options
El PDF resultante tendrá todas las imágenes vectorizadas rasterizadas, y todo el texto seguirá siendo texto, por lo que puede seleccionar, copiar, etc.
Pitstop Pro v2 actualización 3 de Enfocus puede hacer exactamente eso. Tiene una acción llamada "Rasterizar el contenido de la página, manteniendo el texto", que funciona bastante bien. Es un complemento para Adobe Acrobat, por lo que requiere un poco más, pero también está disponible como una solución de servidor.
Tuve un problema similar y lo resolví con la herramienta de conversión ImageMagics ( http://www.imagemagick.org/script/index.php ). Eso viene con Linux y funciona bien en Windows / Cygwin o OS X
convert -density 300 largeVectorFileFromR.pdf out.pdf
Con -density 300 usted controla la resolución (como DPI).
Abajo: el texto también está rasterizado, entiendo que Michael no quiere esto.
Usé lo siguiente:
gswin32c -o "%2" -dFirstPage=1 -dLastPage=1 -sDEVICE=pngalpha -r72x72 -dUseCropBox -dFitPage "%1" -dBATCH -dNOPAUSE
donde %1
es el archivo de entrada y %2
es la salida. Esto se puede usar con LaTeX, el PNG generado tiene la misma proporción y tamaño de página que el PDF original, por lo que la posición relativa de la imagen no cambiará.
Tenga en cuenta que en Linux, es posible que necesite usar gs
lugar de gswin32c
.
También puede establecer el rango de página y luego imprimir las páginas de nuevo a PDF. La desventaja es que el texto también se rasteriza.
inkscape
es la mejor solución, hice rápidamente este archivo por lotes no optimizado que hace exactamente eso y puede jugar con él y cambiar las opciones. ImageMacick convert, gs, o pdftoimages no funcionan tan bien como inkscape
o no exportan las capas o exportan pero con mala calidad:
#!/bin/bash
#set -xev
ORIGINAL_FOLDER=`pwd`
JPEGS=`mktemp -d`
unzip "$1" -d "$JPEGS"
cd "$JPEGS"
# expang the pdf in pdf pages
pdftk combined_to_do.pdf burst output pg_%04d.pdf
#1) print the pdf''s to pngs as they are seen with alpha, layers, transparency etc, this cannot be done by ImageMacick convert or pdftoimages
ls ./pg*.pdf | xargs -L1 -I {} inkscape {} -z --export-dpi=300 --export-area-drawing --export-png={}.png
#2) Second change to jpgs
rm *.pdf
ls ./p*.png | xargs -L1 -I {} convert {} -quality 100 -density 300 {}.jpg
#3) This to make a pdf file out of every jpg image without loss of either resolution or quality:
ls -1 ./*jpg | xargs -L1 -I {} img2pdf {} -o {}.pdf
#4) This to concatenate the pdfpages into one:
pdftk *.jpg.pdf cat output combined.pdf
#5) And last I add an OCRed text layer that doesn''t change the quality of the scan in the pdfs so they can be searchable:
pypdfocr combined.pdf
cp "$JPEGS/combined_ocr.pdf" "$ORIGINAL_FOLDER/$1_ocr.pdf"
cp "$JPEGS/combined.pdf" "$ORIGINAL_FOLDER/$1.pdf"