2005-12-26

Generación de pdf desde DocBook: inclusión de imágenes en eps / pdf

Hola a todos, después de bastante tiempo.

Voy al grano.

Suponte que haces una documentación con DocBook y quieres generar un pdf, ¿no? Es lo normal, para eso es DocBook, un formato fuente, múltiples formatos de salida posibles. Supongamos además que incluimos imágenes con <imagedata>. Según el manual, se pone un imagedata por cada formato en el que dispongamos la imagen y al generar la salida se usará el más apropiado. Para salida impresa lo mejor es un eps, así que tenemos, siempre en teoría:

<mediaobject>
<imageobject>
<imagedata fileref="imgs/prb.png" format="PNG">
</imagedata>
<imageobject>
<imagedata fileref="imgs/prb.eps" format="EPS">
</imagedata>
<textobject><phrase>Imagen de prueba</phrase></textobject>
</imageobject>


Con una referencia a la imagen en PNG para cuando queramos generar HTML y otra a EPS para cuando queramos generar algo impreso.

Y ahora, probamos, se lo pasamos a docbook2pdf y...

q2@herrmann:~/devel/docbook/prueba$ docbook2pdf prb.docbook
Using catalogs: /etc/sgml/catalog
Using stylesheet: /usr/share/docbook-utils/docbook-utils.dsl#print
Working on: /home/q2/devel/docbook/prueba/prb.docbook
This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4)
entering extended mode
[...]
! LaTeX Error: Unknown graphics extension: .eps.
[...]


¡ja! No acepta imágenes en eps, ¡el niño no acepta imágenes en eps!


Bueno, claro eso es que el pdfeTeX ese usará pdf, ¿no?, pues, ustedes dirán, lo convertimos en pdf, se lo pasamos en pdf y listo, ¿verdad que sí? Claro, claro, es lo lógico...

Ésta es la inclusión de la imagen, con el formato eps cambiado por pdf:

<imagedata fileref="imgs/prb.pdf" format="PDF">


Ejecutamos docbook2pdf...

q2@herrmann:~/devel/docbook/prueba$ docbook2pdf prb.docbook
Using catalogs: /etc/sgml/catalog
Using stylesheet: /usr/share/docbook-utils/docbook-utils.dsl#print
Working on: /home/q2/devel/docbook/prueba/prb.docbook
openjade:/home/q2/devel/docbook/prueba/prb.docbook:36:49:E: value of attribute "
format" cannot be "PDF"; must be one of "BMP", "CGM-CHAR", "CGM-BINARY", "CGM-CL
EAR", "DITROFF", "DVI", "EPS", "EQN", "FAX", "GIF", "GIF87a", "GIF89a", "JPG", "
JPEG", "IGES", "PCX", "PIC", "PNG", "PS", "SGML", "TBL", "TEX", "TIFF", "WMF", "
WPG", "SVG", "linespecific"


¡jaaaj! ¡No! ¡DocBook dice que no, que el formato PDF no está reconocido! ¡Jeeesús!

Al final, miren lo que me han hecho hacer:

<imagedata fileref="imgs/prb.pdf" format="EPS" scale="50">


Es decir, que le digo que el formato es EPS para que se lo trague docbook y lo use para formato impreso y luego en realidad le paso el fichero pdf, que sí que lo acepta el pdfeTeX ése, y al que se ve que no le dicen en qué formato está la imagen. Lo del scale es para que no salga demasiado grande. Con eso me genera el pdf del DocBook como yo quería.

Por cierto, para convertir el eps a pdf, mejor usar el epstopdf porque el convert te genera una página entera con la imagen en una esquina, y cuando la insertas te estropea el resultado.

Saludos informáticos,