22 votos

Convertir HTML a la imagen

De fondo

La conversión por lotes de varios resaltado archivos de código fuente (C, SQL, Java, PHP, lote, bash) en imágenes de alta resolución (600 ppp), adecuado para un eBook y libro impreso.

Error De Soluciones

Un número de intentos hasta ahora:

  • OpenOffice o LibreOffice - Tiene que volver a importar el código fuente en el documento cada vez que cambia el archivo de origen. (Es decir, la solución no puede ser fácilmente automatizado para cientos o miles de archivos de código fuente.)
  • enscript. No puede cambiar fácilmente los colores, imperfectamente renders de salida, no integral.
  • LyX / Látex. Imperfectamente renders de salida.
  • gvim en HTML HTMLDOC PostScript — GhostScript a PNG. HTMLDOC ignora font etiquetas.
  • gvim en HTML html2ps — GhostScript a PNG. Colores RGB no son reconocidos por html2ps.
  • Firefox PostScript — GhostScript a PNG. Desagradable indirecta.
  • gvim en HTML OmniFormat para nada. La versión gratuita no aptos para el procesamiento por lotes, un montón de publicidad pop-ups.
  • pygments. No es fácil cambiar la resolución de imagen; no tiene gvim la variedad de esquemas de color.

Más Cerca De La Solución

La solución que casi funciona es:

  • gvim en HTML wkhtmltopdf a PDF. Se requiere de post-procesamiento con ImageMagick (wkhtmltoimage no se puede establecer la resolución de la imagen, sólo el ancho de la página).

Requisitos

  • Windows y Linux, pero es aceptable.
  • Gratis o de OSS
  • De la línea de comandos sólo (adecuado para el procesamiento por lotes)
  • Facilidad de cambio de esquema de color
  • Apoyo: PHP, lote, bash, Java, JavaScript, R, C y SQL

Pregunta

Otras maneras para convertir resaltado de código fuente a una de alta resolución (600 ppp) de la imagen?

Gracias!

9voto

wifi Puntos 159

Requisitos De Software

Los siguientes paquetes de software están disponibles para sistemas Windows y Linux, y son necesarios para una completa solución de trabajo:

  • gvim - se Utiliza para la exportación de sintaxis resaltada código fuente HTML.
  • moria - el esquema de Color de resaltado de sintaxis.
  • wkhtmltoimage - se Utiliza para convertir los documentos HTML a archivos PNG.
  • gawk y sed de Texto herramientas de procesamiento.
  • ImageMagick - se Utiliza para recortar el PNG y agregar un borde.

Pasos Generales

Aquí es cómo funciona la solución:

  1. Cargar el código fuente en un editor que se pueden añadir toques de color.
  2. Exportar el código fuente de un documento HTML (con embedded FONT etiquetas).
  3. Tira el atributo background desde el documento HTML (para permitir la transparencia).
  4. Convertir el documento HTML a un archivo PNG.
  5. Recortar el PNG de la frontera.
  6. Agregar una pequeña, de 25 de píxeles de borde alrededor de la imagen.
  7. Eliminar los archivos temporales.

El script genera imágenes que tienen el mismo ancho de los archivos de origen que contiene las líneas que están debajo de 80 caracteres de longitud. Los archivos de origen con las líneas de más de 80 caracteres de longitud resultado en imágenes tan amplia como sea necesario para conservar la totalidad de la línea.

Instalación

Instalar los componentes en las siguientes ubicaciones:

  • gvim - C:\Program Files\Vim
  • moria - C:\Program Files\Vim\vim73\colors
  • wkhtmltoimage - C:\Program Files\wkhtml
  • ImageMagick - C:\Program Files\ImageMagick
  • Gawk y Sed - C:\Program Files\GnuWin32

Nota: ImageMagick tiene un programa llamado" convert.exe, que no pueden sustituir el Windows convert comando. Debido a esto, la ruta de acceso completa a convert.exe debe estar codificada en el archivo de proceso por lotes (en oposición a la adición de ImageMagick para la PATH).

Las Variables De Entorno

Establecer la RUTA de la variable de entorno :

"C:\Program Files\Vim\vim73";"C:\Program Files\wkhtml";"C:\Program Files\GnuWin32\bin"

Archivo De Proceso Por Lotes

Ejecutar mediante:

src2png.bat src2png.bat

Crear un archivo por lotes llamado src2png.bat copiando el siguiente contenido:

@ECHO OFF

SET NUMBERS=-c "set number"
IF "%2" == "" SET NUMBERS=

ECHO Converting %1 to %1.html...
gvim -e %1 -c "set nobackup" %NUMBERS% -c ":colorscheme moria" ^
  -c :TOhtml -c wq -c :q

REM Remove all background-color occurrences (without being self-referential)
sed -i "s/background-color: #......; \(.*\)}$/\1 }/g" %1.html

ECHO Converting %1.html to %1.png...
wkhtmltoimage --format png --transparent --minimum-font-size 80 ^
  --quality 100 --width 3600 ^
  %1.html %1.png

move %1.png %1.orig.png

REM If the text file has lines that exceed 80 characters, don't crop the
REM resulting image. (The book automatically shrinks large images to fit.)
REM The 3950 is the 80 point font at 80 characters with padding for line
REM numbers.
SET LENGTH=0
FOR /F %%l IN ('gawk ^
  "BEGIN {x=0} {if( length($0)>x ) x=length()} END {print x;}" %1') ^
DO (
  SET LENGTH=%%l
)
SET EXTENT=-extent 3950x
IF %LENGTH% GTR 80 SET EXTENT=

REM Trim the image height, then extend the width for 80 columns, if needed.
REM The result is that all images will be resized the same amount, thus
REM making the font size the same maximum for all source listings. Source
REM files beyond the 80 character limit will be scaled as necessary.
ECHO Trimming %1.png...
"C:\programs\ImageMagick\convert.exe" -format png %1.orig.png ^
  -density 150x150 ^
  -background none -antialias -trim +repage ^
  %EXTENT% ^
  -bordercolor none -border 25 ^
  %1.png

ECHO Removing old files...
IF EXIST %1.orig.png DEL /q %1.orig.png
IF EXIST %1.html DEL /q %1.html
IF EXIST sed*. DEL /q sed*.

Las mejoras y optimizaciones de bienvenida.

Nota: La última versión de wkhtmltoimage controla correctamente reemplazar el color de fondo. Así, la línea para eliminar el CSS para los colores de fondo ya no es necesario, en teoría.

3voto

Mike Cole Puntos 173

leer la página del manual de wkhtmltoimage:

 -d,    --dpi   <dpi>   Change the dpi explicitly

si eso no ayuda: hacking juntos una solución simple con Qt y (el incluido) Webkit es bastante sencillo.

0voto

geneorama Puntos 118

También puede utilizar Open Office para Html- > conversión de PDF formulario de línea de comandos:

http://www.oooninja.com/2008/02/batch-command-line-file-conversion-with.html

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: