2009-07-25 16 views
8

Publico libros técnicos, en formato impreso, PDF y Kindle/MOBI, con EPUB en camino.Conversión de archivos ASCII de origen a archivos JPEG

El Kindle no es compatible con fuentes monoespaciales, que son algo útiles para los listados de código fuente. La única forma de hacer fuentes monoespaciales es convertir el texto (fuente Java, HTML, XML, etc.) en imágenes JPEG. Más específicamente, debido a problemas de paginación, un archivo ASCII de entrada determinado debe dividirse en segmentos de ~ 6 líneas cada uno, con cada sector convertido en JPEG, para que los listados puedan abarcar una pantalla. Este es un dolor real.

Mi actual mecanismo para hacer eso implica:

  1. Correr expand para establecer un espacio de 2 tamaño uniforme pestaña, que las tuberías a ...
  2. a2ps, que las tuberías a ...
  3. un pequeño fragmento de Perl para agregar una línea "%%LanguageLevel: 3\n", que las tuberías a ...
  4. de convert, tomar el (e) PS y hacer un archivo JPEG a cabo, con un fondo adecuado ImageMagick, cosechado a 575x148+5+28, etc.

Eso solía funcionar el 100% del tiempo. Ahora funciona el 95% del tiempo. El resto del tiempo, recibo errores de convert: geometry does not contain image, de los cuales parece que no puedo deshacerme, en parte porque no entiendo cuál es el problema.

Antes de este proceso, solía usar un motor de impresión bonita (source-highlight) para sacar HTML del código fuente ... pero luego, lo único que pude encontrar para convertir el HTML en archivos JPEG fue automatizar la pantalla agarra de un motor Gecko incrustado. Fiabilidad, por eso cambié a mi mecanismo actual.

Entonces, si usted fuera usted, y necesitara convertir los listados de fuentes en imágenes JPEG, de forma automatizada, ¿cómo lo haría? Puntos de bonificación si ofrece algún tipo de proceso de impresión bonita (por ejemplo, palabras clave en negrita).

O, si conoce lo que normalmente causa convert: geometry does not contain image, podría ayudar. Mi proceso actual es feo, pero si pudiera volver al 100% de confiabilidad, estaría bien por ahora.

¡Gracias de antemano!

Respuesta

8

Puede considerar html2ps y luego imagemagick's convert.

Pensamiento: si su objetivo (¿Kindle?) Es compatible con PNG, utilícelo con preferencia a JPEG para esta representación de texto.

+0

Eso resulta prometedor. Estoy bastante seguro de haber tomado ese camino antes y haberlo abandonado, pero no recuerdo por qué, y mis pruebas preliminares sugieren que puede funcionar bien. Trataré de hacerlo mañana o el lunes para confirmar que esta solución funciona. ¡Gracias! – CommonsWare

+0

Sin dados. Obteniendo el mismo error de ImageMagick aproximadamente a la misma frecuencia. Debe ser una cosa de entrada PostScript. – CommonsWare

+5

De hecho, experimentos adicionales mostraron que el error sólo se produce, con la solución html2ps, cuando el archivo de origen tenía espacios en blanco que causó una imagen efectiva vacío que se creará. Entonces, esto funciona! ¡Muchas gracias! – CommonsWare

0

Su distribución de Linux puede incluir pango-view y un surtido de fuentes. Esto funciona en mi sistema FC6:

pango-view --font=DejaVuLGCSansMono --dpi=200 --output=/tmp/text.jpg -q /tmp/text 

Tendrá que identificar una fuente de espacio fijo que está instalado en su sistema. Mire alrededor /usr/share/fonts/.

Pango admite Unicode.

Deje de -q mientras está experimentando, se mostrará en una ventana en lugar de en un archivo.

0

No utilice jpeg. Está optimizado para fotografías y hace un trabajo terrible con textos y dibujos lineales. Use gif o png en su lugar.Tengo entendido que gif ahora no tiene patentes, así que simplemente usaría eso.

+2

No hay opción en Kindle - JPEG o busto. – CommonsWare

1

html2ps es un excelente programa - Lo utilicé para producir un libro de 1300 páginas de una vez, pero es una exageración si lo que desea texto sin formato -> PostScript. Considera enscript en su lugar.

1

Debido a que la cuestión de la conversión de HTML a JPG ha sido contestada, voy a ofrecer una sugerencia en la impresora bonita. He encontrado que Pygments es bastante impresionante. Es compatible con diferentes temas y tiene lexers para casi cualquier idioma por ahí (que anuncian el hecho de que incluso destaca brainfuck). Hay una herramienta de línea de comandos y está disponible en la mayoría de las distribuciones de Linux.

Cuestiones relacionadas