Fondo
Convierta por lotes varios archivos de origen resaltados de sintaxis (C, SQL, Java, PHP, lote, bash) en imágenes de alta resolución (600 ppp), adecuadas para un libro electrónico y un libro impreso.
Soluciones fallidas
Varios intentos hasta ahora:
- OpenOffice o LibreOffice : tiene que volver a importar el código fuente en el documento cada vez que cambia el archivo fuente. (Es decir, la solución no puede automatizarse fácilmente para cientos o miles de archivos fuente).
- enscript. No puede cambiar fácilmente los colores, representa la salida de forma imperfecta, no es completa.
- LyX / LaTeX. Renderiza imperfectamente la salida.
- gvim a HTML - HTMLDOC a PostScript - GhostScript a PNG. HTMLDOC ignora las
font
etiquetas. - gvim a HTML - html2ps - GhostScript a PNG. Los colores RGB no son reconocidos por
html2ps
. - Firefox a PostScript - GhostScript a PNG. Desagradablemente tortuoso.
- gvim a HTML - OmniFormat a cualquier cosa. Versión gratuita no apta para procesamiento por lotes; muchas ventanas emergentes de publicidad.
- pigmentos No se puede cambiar fácilmente la resolución de la imagen; no tiene la gama de esquemas de color de gvim.
Solución más cercana
La solución que casi funciona es:
- gvim a HTML - wkhtmltopdf a PDF. Requerirá un procesamiento posterior con ImageMagick ( wkhtmltoimage no puede establecer la resolución de la imagen, solo el ancho de la página).
Requisitos
- Windows y Linux, pero cualquiera de ellos es aceptable.
- Gratis u OSS
- Solo línea de comando (adecuado para procesamiento por lotes)
- Cambie fácilmente el esquema de color
- Soporte: PHP, lote, bash, Java, JavaScript, R, C y SQL
Pregunta
¿Alguna otra forma de convertir el código fuente resaltado de sintaxis en una imagen de alta resolución (600 ppp)?
¡Gracias!
gvim
syntax-highlighting
imagemagick
ghostscript
Dave Jarvis
fuente
fuente
wkhtmltoimage
y establecer el ancho de la página no es suficiente? la altura no se puede especificar ya que está determinada por el contenido del contenido html. En realidad, todo lo que realmente necesita es ancho, puede calcular el ancho necesario en función de la cantidad de píxeles por pulgada que desee.Respuestas:
Requisitos de Software
Los siguientes paquetes de software están disponibles para sistemas Windows y Linux, y son necesarios para una solución completa y funcional:
Pasos generales
Así es como funciona la solución:
FONT
etiquetas incrustadas ).El script genera imágenes que tienen el mismo ancho para los archivos de origen que contienen líneas que tienen menos de 80 caracteres de longitud. Los archivos de origen con líneas de más de 80 caracteres de largo dan como resultado imágenes tan anchas como sea necesario para retener toda la línea.
Instalación
Instale los componentes en las siguientes ubicaciones:
C:\Program Files\Vim
C:\Program Files\Vim\vim73\colors
C:\Program Files\wkhtml
C:\Program Files\ImageMagick
C:\Program Files\GnuWin32
Nota: ImageMagick tiene un programa llamado
convert.exe
, que no puede reemplazar elconvert
comando de Windows . Debido a esto, la ruta completaconvert.exe
debe estar codificada en el archivo por lotes (en lugar de agregar ImageMagick aPATH
).Variables de entorno
Establezca la variable de entorno PATH en:
Archivo por lotes
Ejecútelo usando:
Cree un archivo
src2png.bat
por lotes llamado copiando los siguientes contenidos:Mejoras y optimizaciones bienvenidas.
Nota: La última versión de wkhtmltoimage maneja correctamente la anulación del color de fondo. Por lo tanto, la línea para eliminar el CSS para los colores de fondo ya no es necesaria, en teoría.
fuente
leyendo la página de manual de
wkhtmltoimage
:si eso no ayuda: piratear una solución simple con Qt y (el incluido) Webkit es bastante sencillo.
fuente
dpi
opción no está disponible con la versión de Windows.También puede usar Open Office para la línea de comando del formulario de conversión Html-> PDF:
http://www.oooninja.com/2008/02/batch-command-line-file-conversion-with.html
fuente
wkhtmltoimage
. Además, su solución es teórica. Si crea un archivo por lotes de trabajo que reproduce exactamente los resultados desrc2png.bat
la respuesta correcta (con imágenes de fondo transparentes) y convierte HTML en menos tiempo que el usowkhtmltoimage
mientras es una solución totalmente automática, le animo a publicar sus resultados como una alternativa . Además, ¿cuál sería la ventaja de reemplazarwkhtmltoimage
con OpenOffice?