{"id":1334,"date":"2016-04-05T10:21:41","date_gmt":"2016-04-05T10:21:41","guid":{"rendered":"http:\/\/esferas.org\/msqlu\/?p=1334"},"modified":"2016-04-05T10:21:43","modified_gmt":"2016-04-05T10:21:43","slug":"probando-conversores-de-texto-a-html","status":"publish","type":"post","link":"https:\/\/esferas.org\/msqlu\/2016\/04\/05\/probando-conversores-de-texto-a-html\/","title":{"rendered":"Probando conversores de texto a HTML &#8230;"},"content":{"rendered":"<div class='__iawmlf-post-loop-links' style='display:none;' data-iawmlf-post-links='[{&quot;id&quot;:980,&quot;href&quot;:&quot;http:\\\/\\\/freshmeat.net\\\/projects\\\/perl-text2html&quot;,&quot;archived_href&quot;:&quot;&quot;,&quot;redirect_href&quot;:&quot;https:\\\/\\\/sourceforge.net\\\/directory\\\/development\\\/development\\\/&quot;,&quot;checks&quot;:[],&quot;broken&quot;:false,&quot;last_checked&quot;:null,&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:981,&quot;href&quot;:&quot;http:\\\/\\\/txt2html.sourceforge.net&quot;,&quot;archived_href&quot;:&quot;https:\\\/\\\/web-wp.archive.org\\\/web\\\/20260415173113\\\/https:\\\/\\\/txt2html.sourceforge.net\\\/&quot;,&quot;redirect_href&quot;:&quot;https:\\\/\\\/txt2html.sourceforge.net\\\/&quot;,&quot;checks&quot;:[],&quot;broken&quot;:false,&quot;last_checked&quot;:null,&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:982,&quot;href&quot;:&quot;http:\\\/\\\/github.com\\\/coolwanglu\\\/pdf2htmlEX&quot;,&quot;archived_href&quot;:&quot;&quot;,&quot;redirect_href&quot;:&quot;https:\\\/\\\/github.com\\\/coolwanglu\\\/pdf2htmlEX&quot;,&quot;checks&quot;:[],&quot;broken&quot;:false,&quot;last_checked&quot;:null,&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:983,&quot;href&quot;:&quot;http:\\\/\\\/www.cups-pdf.de&quot;,&quot;archived_href&quot;:&quot;https:\\\/\\\/web-wp.archive.org\\\/web\\\/20260309223341\\\/https:\\\/\\\/www.cups-pdf.de\\\/&quot;,&quot;redirect_href&quot;:&quot;https:\\\/\\\/www.cups-pdf.de\\\/&quot;,&quot;checks&quot;:[],&quot;broken&quot;:false,&quot;last_checked&quot;:null,&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:984,&quot;href&quot;:&quot;http:\\\/\\\/www.nongnu.org\\\/perl-text2html\\\/manual\\\/#text_placement_rules&quot;,&quot;archived_href&quot;:&quot;&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[],&quot;broken&quot;:false,&quot;last_checked&quot;:null,&quot;process&quot;:&quot;done&quot;}]'><\/div>\n<p>&#8230; en Debian, ya que estoy pensando en crear una impresora virtual para obtener versiones HTML de los listados de la empresa.<\/p>\n<p><!--more--><\/p>\n<p>Una b\u00fasqueda sencilla en los paquetes de Debian estable (empleando <em>apt-cache search 2html)<\/em> me proporciona varios resultados de los que termino eligiendo tres para evaluar: <a href=\"http:\/\/freshmeat.net\/projects\/perl-text2html\">t2html<\/a>, <a href=\"http:\/\/txt2html.sourceforge.net\/\">txt2html<\/a> y <a href=\"http:\/\/github.com\/coolwanglu\/pdf2htmlEX\">pdf2htmlex<\/a>.<\/p>\n<p>Mi prop\u00f3sito es imitar en lo posible el funcionamiento de la impresora virtual PDF del paquete <a href=\"http:\/\/www.cups-pdf.de\/\">printer-driver-cups-pdf,<\/a> aunque no creo que llegue a ese nivel de sofisticaci\u00f3n. Visto el abanico de opciones en los programas de conversi\u00f3n usar\u00e9 un archivo de configuraci\u00f3n global, y guardar\u00e9 los archivos en el mismo directorio que los PDF.<\/p>\n<p>Pretendo que los archivos HTML sean autocontenidos para que no precisen referencias externas como los logotipos o las hojas de estilo. Tambi\u00e9n estar\u00eda muy bien que fuesen capaces de crear hiperenlaces internos porque tengo algunos listados bastante grandes que ya incluyen marcas de ese tipo.<\/p>\n<h4>t2html<\/h4>\n<p>Es el primero que he probado y el nombre enga\u00f1a un poco. Hace pensar en un filtro r\u00e1pido y sencillo y no es as\u00ed. Est\u00e1 pensando para convertir un texto expresado en algo que llaman <a href=\"http:\/\/www.nongnu.org\/perl-text2html\/manual\/#text_placement_rules\">formato t\u00e9cnico<\/a> y que puede serme \u00fatil en alg\u00fan momento pero no ahora; aunque puedo modificar mis listados para que generen dicho formato estoy buscando algo que no implique tocar demasiado las aplicaciones de gesti\u00f3n.<\/p>\n<h4>txt2html<\/h4>\n<p>Este es de los tres el que m\u00e1s se acerca a lo que pretendo. Los listados que quiero convertir proceden en su dise\u00f1o de las impresoras matriciales. Paginarlos correctamente para la impresi\u00f3n de tinta o l\u00e1ser fue m\u00e1s complicado de lo que parec\u00eda porque en las matriciales emple\u00e1bamos mucho el papel ancho y no quer\u00edan que en las hojas A4 se usase la orientaci\u00f3n apaisada. Ya, es lo de la vaca gorda que pese poco, pero fue una de las condiciones de base.<\/p>\n<p>Convertir a HTML un listado de este tipo no es complejo, pero el resultado dista mucho de ser atractivo sin emplear t\u00e9cnicas con CSS con los que ahora no puedo ni quiero lidiar. El programa <em>txt2html<\/em> es muy r\u00e1pido y funciona bien -sin complicaciones- y a pesar de aceptar un buen n\u00famero de par\u00e1metros \u00e9stos est\u00e1n m\u00e1s orientados a <em>entender<\/em> el texto que recibe que a darle un formato vistoso. Cuando digo entender me refiero a saber qu\u00e9 puede ser una cabecera, qu\u00e9 una lista y qu\u00e9 texto debe ir en espaciado fijo.<\/p>\n<h5 style=\"padding-left: 30px;\">Un inciso<\/h5>\n<p style=\"padding-left: 30px;\">En mi programa de gesti\u00f3n se me pidi\u00f3 en un momento concreto que se a\u00f1adiese un \u00edndice para poder localizar r\u00e1pidamente (por p\u00e1gina f\u00edsica) d\u00f3nde aparec\u00edan determinados t\u00e9rminos como nombres de clientes o lugares geogr\u00e1ficos.<\/p>\n<p style=\"padding-left: 30px;\">Mi soluci\u00f3n en aquel momento fue envolver en c\u00f3digos especiales lo que quer\u00eda que fuese en el \u00edndice y pasarlo luego por un filtro externo. Este filtro le\u00eda todas las p\u00e1ginas, extra\u00eda los c\u00f3digos y tomaba nota de en qu\u00e9 p\u00e1ginas aparec\u00edan y luego constru\u00eda el \u00edndice con esa informaci\u00f3n. No estaba mal y funcionaba; ahora pretendo un resultado adaptado a una p\u00e1gina HTML con la misma base.<\/p>\n<p>El programa txt2html puede emplear un diccionario de enlaces externo que va sustituyendo utilizando como herramienta las expresiones regulares. Escribir\u00e9 otra entrada comentando el resultado porque \u00e9sta me est\u00e1 quedando un poco m\u00e1s larga y se ir\u00eda un tanto del tema.<\/p>\n<h4>pdf2htmlex<\/h4>\n<p>Este programa convierte archivos PDF a HTML con bastante buen resultado, aunque emplea Javascript en el documento final y los archivos terminan siendo m\u00e1s bien pesados. No es una tarea f\u00e1cil la que tiene que realizar, especialmente con textos e im\u00e1genes, as\u00ed que se le puede perdonar el uso de recursos.<\/p>\n<p>Invoc\u00e1ndolo de esta forma<\/p>\n<pre lang=\"sh\">$ pdf2htmlEX --tounicode 1 --embed-css 1 --embed-font 1 --embed-javascript 1 --embed-outline 1 --fallback 1 input.pdf\r\nPreprocessing: 57\/57\r\nWarning: encoding confliction detected in font: 1\r\nWorking: 57\/57\r\n\r\n$\r\n<\/pre>\n<p>podemos hacernos una idea del resultado en las siguientes im\u00e1genes<\/p>\n<div id=\"attachment_1337\" style=\"width: 310px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/04\/input.pdf_102.png\" rel=\"attachment wp-att-1337\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1337\" class=\"size-medium wp-image-1337\" src=\"http:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/04\/input.pdf_102-300x191.png\" alt=\"Vista del PDF con evince\" width=\"300\" height=\"191\" srcset=\"https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/04\/input.pdf_102-300x191.png 300w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/04\/input.pdf_102-768x488.png 768w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/04\/input.pdf_102-1024x651.png 1024w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/04\/input.pdf_102.png 1537w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-1337\" class=\"wp-caption-text\">Vista del PDF con evince<\/p><\/div>\n<div id=\"attachment_1336\" style=\"width: 310px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/04\/Iceweasel_103.png\" rel=\"attachment wp-att-1336\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1336\" class=\"size-medium wp-image-1336\" src=\"http:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/04\/Iceweasel_103-300x160.png\" alt=\"Vista con Firefox del resultado en HTML\" width=\"300\" height=\"160\" srcset=\"https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/04\/Iceweasel_103-300x160.png 300w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/04\/Iceweasel_103-768x410.png 768w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/04\/Iceweasel_103-1024x546.png 1024w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2016\/04\/Iceweasel_103.png 1828w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-1336\" class=\"wp-caption-text\">Vista con Firefox del resultado en HTML<\/p><\/div>\n<p>&nbsp;<\/p>\n<p>El documento de entrada es el resultado de la impresi\u00f3n con la impresora virtual de CUPS y necesita algunos ajustes m\u00e1s porque contiene juegos de caracteres mezclados que no se muestran bien (observar el aviso emitido durante la conversi\u00f3n). Otro detalle es que en el navegador se muestran los saltos de p\u00e1gina del documento original; es parte de la magia de <em>pdf2htmlEX<\/em>.<\/p>\n<h4>Resumiendo &#8230;<\/h4>\n<p>&#8230; he elegido el programa <em>txt2html<\/em> para convertir a HTML los listados de texto pelados y <em>pdf2htmlEX<\/em> para obtener lo mismo desde documentos PDF.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8230; en Debian, ya que estoy pensando en crear una impresora virtual para obtener versiones HTML de los listados de la empresa.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","webmentions_disabled_pings":false,"webmentions_disabled":false,"footnotes":""},"categories":[2],"tags":[41,549,64,222,552,550,551],"class_list":["post-1334","post","type-post","status-publish","format-standard","hentry","category-software","tag-debian","tag-html","tag-impresion","tag-pdf","tag-pdf2htmlex","tag-t2html","tag-txt2html"],"_links":{"self":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/1334","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/comments?post=1334"}],"version-history":[{"count":0,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/1334\/revisions"}],"wp:attachment":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/media?parent=1334"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/categories?post=1334"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/tags?post=1334"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}