Convertire HTML in image

background

Batch converte diversi file sorgente evidenziati in syntax (C, SQL, Java, PHP, batch, bash) in immagini ad alta risoluzione (600dpi), adatte ad un eBook e al libro printingto.

Soluzioni non riuscite

Un certo numero di tentativi finora:

  • OpenOffice o LibreOffice – Devi reimportre il codice sorgente nel documento each volta che cambia il file di origine. (Ovvero, la soluzione non può essere facilmente automatizzata per centinaia o migliaia di file di origine.)
  • enscript. Non può cambiare facilmente i colors, rende imperfettamente l'output, non completa.
  • LyX / LaTeX. Esegue imperfettamente l'output.
  • gvim in HTML – HTMLDOC in PostScript – GhostScript in PNG. HTMLDOC ignora i tag di font .
  • gvim in HTML – html2ps – GhostScript in PNG. I colors RGB non vengono riconosciuti da html2ps .
  • Firefox per PostScript – GhostScript a PNG. Obnoxiously circuitous.
  • gvim in HTML – OmniFormat a qualsiasi cosa. Versione gratuita inadatta per l'elaborazione batch; un sacco di pop-up pubblicitari.
  • Pygments. Imansible modificare facilmente la risoluzione dell'image; non ha la gamma di colors di gvim.

Soluzione più vicina

La soluzione che quasi funziona è:

  • gvim in HTML – wkhtmltopdf in PDF. Occorrerà post-elaborazione con ImageMagick ( wkhtmltoimage non può impostare la risoluzione dell'image, solo la width della pagina).

Requisiti

  • Windows e Linux, ma è accettabile.
  • Libero o OSS
  • Solo linea di command (adatta per l'elaborazione in batch)
  • Modificare facilmente il colore
  • Supporto: PHP, batch, bash, Java, JavaScript, R, C e SQL

Domanda

Qualsiasi altro modo per convertire il codice sorgente evidenziato in syntax in un'image ad alta risoluzione (600 dpi)?

Grazie!

    Requisiti software

    I seguenti pacchetti software sono disponibili per i sisthemes Windows e Linux e sono necessari per una soluzione completa e funzionante:

    • gvim – Utilizzato per esportre il codice sorgente evidenziato in syntax in HTML.
    • moria – Schema a colors per evidenziare la syntax.
    • wkhtmltoimage – utilizzato per convertire i documenti HTML in file PNG.
    • gawk e sed – Strumenti di elaborazione di text.
    • ImageMagick – utilizzato per tagliare il PNG e aggiungere un bordo.

    Passi generali

    Ecco come funziona la soluzione:

    1. Caricare il codice sorgente in un editor che può aggiungere spruzzi di colore.
    2. Esportre il codice sorgente come documento HTML (con i tag FONT incorporati).
    3. Strip l'attributo di background dal documento HTML (per consentire la trasparenza).
    4. Convertire il documento HTML in un file PNG.
    5. Trim il bordo PNG.
    6. Aggiungere un bordo di 25 pixel piccolo intorno all'image.
    7. Elimina i file temporanei.

    Lo script genera immagini di tutte le stesse larghezze per i file di origine contenenti righe che sono tutte di lunghezza inferiore a 80 caratteri. I file di origine con linee superiori a 80 caratteri portno a immagini ampie quanto necessarie per mantenere l'intera row.

    Installazione

    Installare i componenti nelle seguenti posizioni:

    • gvimC:\Program Files\Vim
    • moriaC:\Program Files\Vim\vim73\colors
    • wkhtmltoimageC:\Program Files\wkhtml
    • ImageMagickC:\Program Files\ImageMagick
    • Gawk e SedC:\Program Files\GnuWin32

    Nota: ImageMagick ha un programma denominato convert.exe , che non può sostituire il command di convert Windows. Di conseguenza, il path completo di convert.exe deve essere codificato nel file batch (invece di aggiungere ImageMagick al PATH ).

    variables ambientali

    Impostare la variabile di ambiente PATH su:

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

    File batch

    Eseguirlo utilizzando:

     src2png.bat src2png.bat 

    Creare un file batch denominato src2png.bat copiando i seguenti contenuti:

     @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*. 

    Benvenuti miglioramenti e ottimizzazioni.

    Nota: l'ultima versione di wkhtmltoimage gestisce correttamente l'overriding del colore di background. Così la linea per rimuovere il CSS per i colors di background non è più necessaria, in teoria.

    leggere la manpage di wkhtmltoimage :

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

    se questo non aiuta: hacking insieme una soluzione semplice con Qt e (incluso) Webkit è abbastanza semplice.

    È inoltre ansible utilizzare la row di command Open Office per la row di conversione Html-> PDF:

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