LF Tip: generando PDF desde p�ginas html
ArticleCategory:
Applications
AuthorImage:[Here we need a little image from you]
TranslationInfo:[Author + translation history. mailto: or
http://homepage]
original in en Guido Socher
en to es guadapeich
AboutTheAuthor:[A small biography about the author]
Hace alg�n tiempo comentamos que linuxfocus deseaba tener los art�culos disponibles como archivos pdf. Como respuesta recibimos una serie de sugerencias que est�n resumidas en este tip. Muchas gracias por todas esas sugerencias.
Abstract:
Desde ahora en LinuxFocus incluiremos al menos un consejo cada mes. Si tienes alguno, env�alo a [email protected]
ArticleIllustration:
ArticleBody:
Introducci�n
Probablemente habr�s notado que ahora tenemos archivos PDF para todos los art�culos en idiomas que usan los c�digos de caracteres iso8859-1. No fue f�cil conseguirlo ya que dese�bamos que se generaran autom�ticamente para evitar que las p�ginas html y los documentos PDF difirieran.
Aqu� est� nuestra experiencia con una lista de posibilidades para generar PDF.
La idea
Todos los sistemas linux tienen la utilidad de ghostscript ps2pdf. ps2pdf trabaja muy bien y la calidad del PDF generado es buena. En otras palabras, siempre podemos generar archivos PDF si manejamos el documento como un archivo postscript.
El sistema de impresi�n de linux est� basado completamente en postscript as� que �ser�a f�cil?. Realmente el problema es hacerlo desde la consola con un script. No quieres utilizar el rat�n cuando necesitas convertir unos cuantos miles de art�culos.
Si no te preocupan los colores, las tablas y las im�genes entonces una combinaci�n de "lynx -dump .... | nenscript" y ps2pdf har� el trabajo. Sin embargo si necesitas tablas e im�genes sigue leyendo.
Los candidatos
html2ps
Es un perl script y la versi�n probada aqu� fue html2ps 1.0 beta3.
La p�gina del proyecto es http://user.it.uu.se/~jan/html2ps.html
El programa trabaja bastante bien. Sin embargo depende de una serie de m�dulos de perl y tiene problemas con p�ginas que usen tablas para dar formato al html. Es una buena soluci�n si tienes una composici�n simple.
latex
Existe un conversor de latex a PDF. Utilizando xslt puedes convertir
html a Latex. Un requisito para esto es tener un documento html con s�ntaxis correcta. Puedes conseguirlo con la utilidad tidy:
HTML --(tidy)--> XHTML --(XSLT)--> Latex --(pdflatex)--> PDF
No investigu� esta posibilidad porque xslt y latex me parecieron muy pesados y complejos.
control remoto del navegador
Si de alguna forma fuera posible controlar remotamente un navegador entonces tendr�amos la ventaja de que el PDF generado ser�a id�ntico a lo que normalmente ves en tu navegador. El problema es que es necesario un display X11. No es entonces posible correrlo desde una tarea de cron.
El proyecto mozilla ha mejorado la impresi�n y presentaci�n pero sin embargo suprimi� algunas de las opciones de control remoto que nestcape communicator ten�a. La soluci�n siguiente s�lo trabajar� con communicator 4.X
netscape -noraise -remote "openurl(http://somepage)"
sleep(10) # there is no way to know if the page is completely loaded
# so we just wait a bit
netscape -noraise -remote saveas(somepage.ps,PostScript)
sleep(10)
ps2pdf somepage.ps
Algunos lectores pensaban que la impresi�n remota tambi�n ser�a posible con konqueror pero nadie consigui� dar una soluci�n que funcionase.
htmldoc
Htmldoc es una utilidad muy bien escrita que se encuentra en http://www.htmldoc.org/. El siguiente comando hace exactamente lo que quer�amos:
htmldoc -t pdf --webpage -f file.pdf file.html
Usamos la versi�n 1.8.24 y trabaj� perfectamente. El �nico problema es que el archivo pdf resultante es en comparaci�n 10 veces mayor que cualquiera de los PDF generados por las otras soluciones sin importar que opci�n de compresi�n se use. Un gran problema si tienes miles de documentos.
Conclusi�n
Finalmente usamos una combinaci�n de control remoto de netscape y htmldoc.
No confiamos s�lo en htmldoc debido al tama�o de los archivos generados.
Si t� tienes nuevas sugerencias e ideas con respecto a este asunto entonces escr�benos.