2011-07-14 14 views
5

Hay un bug in Inkscape donde las imágenes JPEG incluidas en un documento SVG se incrustan como mapas de bits en lugar de JPEG al exportar a archivos PDF.Incrustar datos JPG correctamente en archivos PDF generados por Inkscape

El resultado es un gran aumento en el tamaño del archivo. Por ejemplo, tengo un simple dibujo SVG que incluye una imagen JPEG de 2 MB; exportar a PDF resultados en un archivo de 14 MB.

Estoy buscando una solución. ¿Hay alguna manera de de corregir el PDF resultante insertando la imagen JPG codificada correctamente, quizás mediante algún tipo de truco de pdftk?

(En mi caso, el PDF resultante se incluirá como una figura en un documento LaTeX rendido con pdflatex, lo que puede haber soluciones distintas de fijación directamente el PDF generado por Inkscape.)

+1

Finalmente corregido en Inkscape 0.91. –

Respuesta

3

Una kludge es utilizar pdf2ps seguido por ps2pdf, que volverá a codificar los datos de mapa de bits en formato JPEG:

pdf2ps made-by-inkscape.pdf foo.ps 
ps2pdf foo.ps smaller-file.pdf 

por mi caso de prueba, los tamaños de los archivos fueron:

original JPEG   2.1M 
made-by-inkscape.pdf 15M 
foo.ps    104M 
smaller-file.pdf  1.5M 

Pero, por supuesto, esto implica volver a codificar los datos JPEG, lo cual es mejor evitar.

+0

Tenga en cuenta que ps2pdf puede tomar pdf como entrada, no es necesario que primero produzca un archivo ps. – Maxim

1

Encontré que con Inkscape 0.48.1 exportando a EPS en su lugar, y pasando el archivo EPS resultante al epstopdf script, produce buenos resultados. Los archivos PNG/JPG permanecen PNG/JPG dentro del archivo PDF, las fuentes se ven bien, etc.

+0

Esto no funcionó bien para mí en Inkscape 0.48.4 (stock en Ubuntu 14.04). Creó un SVG casi trivial con un JPEG de 305604 bytes. Exportar a PDF produce 2414085 bytes, 'pdfimages -j' extrae un PPM de 2904016 bytes. Exportar a EPS produce 28295129 bytes. epstopdf (En el paquete Ubuntu texlive-font-utils) produce 1223973 bytes PDF. 'pdfimages -j' extrae un JPEG de 821634 bytes. Conclusión: ha sido reencodificado. –

Cuestiones relacionadas