8

バックグラウンド

OpenOffice Writer には、ASCII テキスト ソース ファイルへのリンク、構文の強調表示の適用、フレームでのラップ、およびソース ファイルが変更されるたびにフレームの内容を更新する機能がありません。ただし、OpenOffice Writer は画像にリンクでき、画像が変更されると自動的に画像を更新します。

問題

イメージは高解像度 (300 dpi 以上) で、白い背景 (つまり、印刷ページ) に適したシンタックス カラーリングを使用する必要があります。

質問

次のようなソース コード ファイルから高品質の画像を自動的に作成するにはどうすればよいですか。

  • SQL;
  • PostgreSQL 関数;
  • Java;
  • bash スクリプト; と
  • RとPL/R?

試み

ほとんどの試みは、次のテーマのバリエーションです。

$ enscript --color -f Courier12 -B -1 --highlight=sql -h -o - source.sql |\
  convert - -trim -border 10 source.png

このアプローチにはいくつかの問題があります。

  1. 解像度が不足しています (使用-resample-densityても改善されません)。
  2. 構文の強調表示は、白いページには適していません (おそらく、enscript のカラー テーマが変更される可能性があります)。
  3. を使用するとCourier100複数の.pngファイルが生成され、それらをつなぎ合わせる必要があります。
  4. -border 10が予期せず背景色を白からライトグレーに変更します。

手動ソリューション

ソース ファイルを PostScript に変換し (ImageMagick を完全に使用せずに)、それらを GIMP にインポートすると、目的の結果が得られます。残念ながら、その解決策には手作業が少し必要であり、私の GIMP バッチ プログラミングの経験はほとんどありません。

4

2 に答える 2

7

ソフトウェア要件

次のソフトウェア パッケージは、Windows と Linux の両方のシステムで利用でき、完全で機能するソリューションに必要です。

  • gvim - 構文が強調表示されたソース コードを HTML にエクスポートするために使用されます。
  • moria - 構文強調表示の配色.
  • wkhtmltopdf - HTML ドキュメントを PDF または PostScript (PS) ドキュメントに変換します.
  • Ghostscript - PS を PNG に変換するために使用されます。
  • ImageMagick - PNG をトリミングして境界線を追加するために使用されます。

一般的な手順

ソリューションの仕組みは次のとおりです。

  1. 色のスプラッシュを追加できるエディターにソース コードをロードします。
  2. ソース コードを HTML ドキュメントとしてエクスポートします (FONTタグが埋め込まれています)。
  3. HTML ドキュメントを PS ファイルに変換します。
  4. PS ファイルを PNG ファイルに変換します。
  5. PNG の白い境界線と熱心すぎるソース コードの境界線をトリミングします。
  6. HTML ドキュメントと同じ背景色を使用して、画像の周囲に境界線を追加します。
  7. 一時ファイルを削除します。

インストール

コンポーネントを次の場所にインストールします。

  • gvim -C:\Program Files\Vim
  • モリア-C:\Program Files\Vim\vim73\colors
  • wkhtmltopdf -C:\Program Files\wkhtml
  • ゴーストスクリプト-C:\Program Files\gs
  • ImageMagick -C:\Program Files\ImageMagick

注: ImageMagick には というプログラムconvert.exeがあり、Windowsconvertコマンドに取って代わることはできません。このため、(ImageMagick を に追加するのではなく) へのフル パスをconvert.exeバッチ ファイルにハードコードする必要がありますPATH

環境変数

次の環境変数を追加または更新します。

  • GS_LIB =C:\Program Files\gs\gs9.00\lib
  • GS_PROG =C:\Program Files\gs\gs9.00\bin\gswin32.exe
  • パス="C:\Program Files\Vim\vim73";"C:\Program Files\wkhtml";"C:\Program Files\gs\gs9.00\bin"

バッチファイル

バッチ ソース テキストは次のとおりです。

@ECHO OFF

ECHO Converting %1 to %1.html ...

gvim -e %1 -c "set nobackup" -c ":colorscheme moria" -c :TOhtml -c wq -c :q

ECHO Converting %1.html to %1.ps ...

wkhtmltopdf --quiet --dpi 1200 %1.html %1.ps

ECHO Converting %1.pdf to %1.png ...
IF EXIST %1.png DEL /q %1.png

gswin32 -q -dBATCH -dNOPAUSE -dSAFER -dNOPROMPT ^
 -sDEVICE=png16m -dDEVICEXRESOLUTION=600 -dDEVICEYRESOLUTION=600 ^
 -dDEVICEWIDTH=4958 -dDEVICEHEIGHT=7017 -dNOPLATFONTS ^
 -dTextAlphaBits=4 -sOutputFile=%1.png %1.ps

ECHO Trimming %1.png ...

move %1.png %1.orig.png

"C:\Program Files\ImageMagick\convert.exe" -trim +repage -trim +repage ^
  -bordercolor "#f0f0f0" -border 25x25 %1.orig.png %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 %1.ps DEL /q %1.ps
于 2010-11-23T03:29:53.783 に答える