Word tal vez solo representa una imagen escalada y la envía de esa manera como entrada de impresora (supongo que Distiller funciona como impresora). Si es así, entonces es bueno para impresoras normales, pero ineficiente para impresoras falsas que producen archivos PDF.
Por ejemplo, pdfLaTeX incrusta correctamente la imagen en el archivo de salida. Verifique mi PDF cargado en la galería min.us: incrustando la imagen en un documento de LaTeX
Lo importante es qué pila de producción de PDF está utilizando. Si probar otra impresora PDF, como PDFCreator excelente y gratuito , no soluciona el problema, entonces debería intentar usar la exportación de PDF dedicada, es decir, no funciona como impresora. Las versiones recientes de Word de AFAIK tienen la exportación de PDF incorporada, por lo que si se implementa correctamente, obtendrá un archivo pequeño, gracias a la incorporación de imágenes utilizadas en el documento.
ENORME EDICIÓN
La galería ha cambiado de nombre a Incrustar imagen PNG en LaTeX vs Word
He examinado más a fondo mi mytest.pdf
generado por pdfLaTeX y el test2.pdf
generado por Word.
mytest.pdf
test2.pdf
Comencemos con descomprimir. Si busca un archivo sin comprimir, verá fácilmente el inicio de la secuencia de imágenes ( <<...>>stream
línea con los parámetros Ancho y Altura, igual que en test.png
, es decir, 176x295), que termina con la endstream
etiqueta. Peek time.
(ADVERTENCIA en este punto se supone que pdftk está en la versión 1.41)
test2.pdf
$ pdftk test2.pdf output test2uc.pdf uncompress
$ sed '\,^<</Width 176[^>]*/Height 295[^>]*>>stream$,!d' test2uc.pdf
<</Width 176/BitsPerComponent 8/Interpolate true/Height 295/Filter[/DCTDecode]/Subtype/Image/Length 20003/ColorSpace/DeviceRGB/Type/XObject>>stream
$ sed '1,\,^<</Width 176[^>]*/Height 295[^>]*>>stream$,d;/^endstream$/,$d' test2uc.pdf > test2stream
$ xxd test2stream | head -10
0000000: ffd8 ffe0 0010 4a46 4946 0001 0101 0048 ......JFIF.....H
0000010: 0048 0000 ffe1 005c 4578 6966 0000 4d4d .H.....\Exif..MM
0000020: 002a 0000 0008 0004 0302 0002 0000 0016 .*..............
0000030: 0000 003e 5110 0001 0000 0001 0100 0000 ...>Q...........
0000040: 5111 0004 0000 0001 0000 0b13 5112 0004 Q...........Q...
0000050: 0000 0001 0000 0b13 0000 0000 5068 6f74 ............Phot
0000060: 6f73 686f 7020 4943 4320 7072 6f66 696c oshop ICC profil
0000070: 6500 ffe2 0c58 4943 435f 5052 4f46 494c e....XICC_PROFIL
0000080: 4500 0101 0000 0c48 4c69 6e6f 0210 0000 E......HLino....
0000090: 6d6e 7472 5247 4220 5859 5a20 07ce 0002 mntrRGB XYZ ....
$ file test2stream
test2stream: JPEG image data, JFIF standard 1.01
Por lo tanto, Word está dando JPEG en lugar de PNG en su salida interna para un mayor procesamiento de PDF. ¡Simplemente guau! Lo mismo puede suceder al enviar la salida a la impresora.
test2stream.jpg
mytest.pdf
$ pdftk mytest.pdf output mytestuc.pdf uncompress
$ sed '\,^<</Width 176[^>]*/Height 295[^>]*>>stream$,!d' mytestuc.pdf
<</Width 176/BitsPerComponent 8/Height 295/Subtype/Image/Length 155760/ColorSpace/DeviceRGB/Type/XObject>>stream
$ sed '1,\,^<</Width 176[^>]*/Height 295[^>]*>>stream$,d;/^endstream$/,$d' mytestuc.pdf > myteststream
$ xxd myteststream | head -10
0000000: ebeb ebea eaea ecec eceb ebeb ebeb ebeb ................
0000010: ebeb ebeb ebec ecec ebeb ebeb ebeb ebeb ................
0000020: ebeb ebeb ebeb ebeb ebeb ebeb ebeb ebeb ................
0000030: ebeb ebea eaea eaea eaec ecec eaea eaec ................
0000040: ecec ebeb ebec ecec ebeb ebeb ebeb ebeb ................
0000050: ebeb ebeb ebeb ebeb ebeb ebeb ebeb ebeb ................
0000060: ebeb ebeb ebeb ebeb ebeb ebeb ebeb ebeb ................
0000070: ebeb ebeb ebeb ebeb ebeb ebeb ebeb ebeb ................
0000080: ebea eaea ecec eceb ebeb ebeb ebea eaea ................
0000090: ebeb ebeb ebeb ebeb ebeb ebeb ebeb ebeb ................
$ file myteststream
myteststream: DOS executable (COM)
No es un archivo COM, pero tampoco es PNG.
$ du -b test.png test2stream myteststream
57727 test.png
20004 test2stream
155761 myteststream
¿Lo ves ahora? La secuencia de imágenes (de PNG) del PDF producido por pdfLaTeX es posiblemente un formato sin formato simple (176 * 295 * 3 = 155760, 1 proviene de una nueva línea superflua). Vamos a verlo:
$ convert -depth 8 -size 176x295 rgb:myteststream myteststream.png
¡Y tenemos nuestra imagen original de vuelta! No, espera. Parece que la descompresión de pdftk 1.41 tiene errores y la imagen era casi la misma con algunos defectos. Actualicé a pdftk 1.44, pero esta versión no descomprime la secuencia de imágenes en absoluto. Además, pdftk no emite el diccionario de flujo en una línea, por lo que la extracción anterior con sed ya no funciona, pero no tiene sentido solucionarlo ahora.
Entonces, ¿qué podemos hacer con Word? No me parece mucho. Al menos puede trasplantar la imagen incrustada de un PDF a otro. Repetí la descompresión de ambos archivos PDF usando pdftk reciente, los abrí en vim, los reemplacé test2uc.pdf
<<...>>stream...endstream
con su contraparte mytestuc.pdf
, los guardé test2fixuc.pdf
y los comprimí test2fix.pdf
.
test2fix.pdf
prueba.pdf
Sería un pecado no revisar su gran PDF después de todo. Ok, he preparado otro oneliner para jugar con archivos PDF sin comprimir pdftk 1.44 para enumerar secuencias de imágenes y sus líneas de inicio en archivos. Así que comenzaré con descomprimir test.pdf
.
(ADVERTENCIA en este punto se supone que pdftk está en la versión 1.44)
$ pdftk test.pdf output testuc.pdf uncompress
$ awk '{if(i)h=h$0} /^[0-9]+ [0-9]+ obj $/{i=1;h=""}/^stream$/{i=0;if(h!~/\/Image/)next;print h,":"NR+1}' testuc.pdf
<</ColorSpace /DeviceRGB/Subtype /Image/Length 10443804/Width 707/Type /XObject/BitsPerComponent 8/Height 4924>>stream :619
<</ColorSpace /DeviceRGB/Subtype /Image/Length 11264460/Width 953/Type /XObject/BitsPerComponent 8/Height 3940>>stream :12106
<</ColorSpace /DeviceRGB/Subtype /Image/Length 2813256/Width 953/Type /XObject/BitsPerComponent 8/Height 984>>stream :12910
<</ColorSpace /DeviceRGB/Subtype /Image/Length 11264460/Width 953/Type /XObject/BitsPerComponent 8/Height 3940>>stream :18547
<</ColorSpace /DeviceRGB/Subtype /Image/Length 2813256/Width 953/Type /XObject/BitsPerComponent 8/Height 984>>stream :19312
<</ColorSpace /DeviceRGB/Subtype /Image/Length 4845216/Width 328/Type /XObject/BitsPerComponent 8/Height 4924>>stream :19326
¡Algo está realmente loco aquí! ¡6 imágenes en bruto (aparentemente esta vez pdftk no tuvo ningún problema en descomprimirlas) que toman 43444452 bytes juntas! Vuelva a verificar test2uc.pdf
y mytestuc.pdf
.
$ awk '{if(i)h=h$0} /^[0-9]+ [0-9]+ obj $/{i=1;h=""}/^stream$/{i=0;if(h!~/\/Image/)next;print h,":"NR+1}' test2uc.pdf
<</Width 176/BitsPerComponent 8/Interpolate true/Height 295/Filter /DCTDecode/Subtype /Image/Length 20003/ColorSpace /DeviceRGB/Type /XObject>>stream :113
przemoc@debian:~/latex/test/img/mod$ awk '{if(i)h=h$0} /^[0-9]+ [0-9]+ obj $/{i=1;h=""}/^stream$/{i=0;if(h!~/\/Image/)next;print h,":"NR+1}' mytestuc.pdf
<</DecodeParms <</Colors 3/Columns 176/Predictor 10/BitsPerComponent 8>>/Width 176/BitsPerComponent 8/Height 295/Filter /FlateDecode/Subtype /Image/Length 54954/ColorSpace /DeviceRGB/Type /XObject>>stream :22
En ambos casos, solo una secuencia de imágenes. ¿Por qué demonios podría haber más de ellos?
$ sed '1,618d;/^endstream $/q' testuc.pdf | convert -depth 8 -size 707x4924 rgb:- testuc-stream1.png
$ sed '1,12105d;/^endstream $/q' testuc.pdf | convert -depth 8 -size 953x3940 rgb:- testuc-stream2.png
$ sed '1,12909d;/^endstream $/q' testuc.pdf | convert -depth 8 -size 953x984 rgb:- testuc-stream3.png
$ sed '1,18546d;/^endstream $/q' testuc.pdf | convert -depth 8 -size 953x3940 rgb:- testuc-stream4.png
$ sed '1,19311d;/^endstream $/q' testuc.pdf | convert -depth 8 -size 953x984 rgb:- testuc-stream5.png
$ sed '1,19325d;/^endstream $/q' testuc.pdf | convert -depth 8 -size 328x4924 rgb:- testuc-stream6.png
La imagen se cortó en muchos pedazos ... ¿Parece algún tipo de protección completamente estúpida, tal vez introducida por Distiller (y tal vez se puede desactivar)? Dudo que PDFCreator escupiera lo mismo, a menos que sea Word quien realice esta increíble locura ...
testuc-stream1.png y otros (use la flecha derecha para navegar)
Conclusión
Las cosas importantes son:
- se puede ver claramente, esa gran imagen que se cortó en pedazos en realidad está mejorada JPEG, por lo que mi hipótesis era correcta,
- porque en PDFCreator también obtienes un gran archivo en la salida, es Word quien proporciona una imagen terriblemente grande a la impresora PDF falsa, y mi suposición anterior también era correcta.
Uf. Esta investigación tomó algo de tiempo. La palabra es un pedazo de basura.
Soluciones alternativas?
Mientras tanto, se dieron algunas sugerencias. Déjame comentarlos.
El uso de escritor con soporte PDF decente como LibreOffice (olvídate de OpenOffice, está obsoleto ahora) es una buena solución, a menos que algunas incompatibilidades te impidan trabajar con él.
Usar una imagen más grande en el mismo cuadro de la página tampoco es una mala idea, ya que incluso después de JPEG-izing, los artefactos serán menos visibles.
Sin embargo, mi otro grosz está usando JPEG desde el principio. De esa forma, Word no debería volver a comprimirlo (nunca se sabe ...) y puede proporcionar la mayor calidad posible de JPEG. También hay compresión JPEG sin pérdidas. Los desarrolladores de Redmond presumiblemente pensaron que no era necesario, por lo que no me sorprendería si Word no maneja tales JPEG. Bueno, TBH no es ampliamente compatible (incluso en el mundo de código abierto), al igual que la codificación aritmética (o es una situación aún peor en el caso de la codificación aritmética).
convert test.png -quality 100 -resize $((100*300/72))% test-300dpi-mitchell.jpg
convert test.png -quality 100 -filter box -resize $((100*300/72))% test-300dpi-box.jpg
convert test.png -quality 100 test.jpg
(En Windows use 416 en lugar de esta $(())
expansión aritmética disponible en shells POSIX)
Creo que el Mitchell predeterminado es bueno para la mejora de escala, pero si realmente desea una imagen pixelada, vaya con Box como sugiere @ceving. Por supuesto, los primeros 2 archivos son útiles solo si debe (por alguna razón) usar impresoras PDF falsas.
He subido los tres archivos.
test-300dpi-mitchell.jpg (426 KB)
test-300dpi-box.jpg (581 KB)
test.jpg (74 KB)
Si mi hipótesis es correcta y Word no volverá a comprimir la imagen JPEG, simplemente use la última no ampliada y vaya con la salida de PDF incorporada, porque tiene menos inconvenientes (al menos evita una escala innecesaria).