構文で強調表示されているさまざまなソースファイル(C、SQL、Java、PHP、バッチ、bash)を、電子書籍や印刷された本に適した高解像度の画像(600dpi)にバッチ変換します。
これまでの試行回数:
font
タグを無視します。html2ps
によって認識されません。ほとんど機能する解決策は次のとおりです。
構文で強調表示されたソースコードを高解像度(600dpi)の画像に変換する他の方法はありますか?
ありがとうございました!
次のソフトウェアパッケージは、WindowsシステムとLinuxシステムの両方で使用でき、完全に機能するソリューションに必要です。
ソリューションの仕組みは次のとおりです。
FONT
タグが埋め込まれています)。このスクリプトは、長さがすべて80文字未満の行を含むソースファイルに対して、すべて同じ幅の画像を生成します。行が80文字を超えるソースファイルは、行全体を保持するために必要な幅の画像になります。
コンポーネントを次の場所にインストールします。
C:\Program Files\Vim
C:\Program Files\Vim\vim73\colors
C:\Program Files\wkhtml
C:\Program Files\ImageMagick
C:\Program Files\GnuWin32
注:ImageMagickにはconvert.exe
というプログラムがあり、Windowsのconvert
コマンドに取って代わることはできません。このため、convert.exe
へのフルパスをバッチファイルにハードコーディングする必要があります(ImageMagickをPATH
に追加するのではありません)。
PATH 環境変数 を次のように設定します。
"C:\Program Files\Vim\vim73";"C:\Program Files\wkhtml";"C:\Program Files\GnuWin32\bin"
以下を使用して実行します。
src2png.bat src2png.bat
次の内容をコピーして、src2png.bat
というバッチファイルを作成します。
@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*.
改善と最適化を歓迎します。
注:wkhtmltoimageの最新バージョンは、背景色のオーバーライドを適切に処理します。したがって、理論的には、背景色のCSSを削除する行は不要になります。
wkhtmltoimage
のマンページを読む:
-d, --dpi <dpi> Change the dpi explicitly
それでも問題が解決しない場合:Qtと(付属の)Webkitを使用して単純なソリューションをハッキングするのは非常に簡単です。
Open Office forHtmlを使用することもできます-> PDFコマンドラインからの変換:
http://www.oooninja.com/2008/02/batch-command-line-file-conversion-with.html