次のHTMLをPythonでPNG画像に変換したいと思います。
<html>
<b>Bold text</b>
</html>
もちろん、このHTMLは一例です。
私は「ピサ」を試してみましたが、htmlではなく、PDFに変換されます。 HTMLをPDFに変換してからPDFをPNGに変換できますが、直接的な解決策(HTMLからPNGへ)があるかどうか疑問に思っていました)。 -inまたは外部モジュールが適切に動作します。
これがGraphicsmagickまたはImagemagickで実行できる場合は、完璧です。
webkit2png。元のバージョンはOSXのみですが、幸いにもクロスプラットフォームのフォークがあります https://github.com/ AdamN/python-webkit2png
Vartecの答えを拡張して、使用方法も説明するには...
インストール webkit2png
最も簡単な方法は、おそらくgithubリポジトリのクローンを作成してセットアップを実行することです。
mkdir python-webkit2png
git clone https://github.com/adamn/python-webkit2png.git python-webkit2png
python setup.py install
これにはpythonとgitが既にインストールされている必要があります。cygwinの場合、これはwebkit2pngをコマンドとしてパスに追加します。他の端末/ OSではテストしていません。
実行してください
現在のディレクトリにWebサイトがあるとします。 (CSSスタイルシートを使用するHTMLファイルがありましたが、CSSファイルについて考える必要はありません。)
webkit2png something.html -o something.png
オプションwebkit2png -h
は私たちに通知します:
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-x WIDTH HEIGHT, --xvfb=WIDTH HEIGHT
Start an 'xvfb' instance with the given desktop size.
-g WIDTH HEIGHT, --geometry=WIDTH HEIGHT
Geometry of the virtual browser window (0 means
'autodetect') [default: (0, 0)].
-o FILE, --output=FILE
Write output to FILE instead of STDOUT.
-f FORMAT, --format=FORMAT
Output image format [default: png]
--scale=WIDTH HEIGHT Scale the image to this size
--aspect-ratio=RATIO One of 'ignore', 'keep', 'crop' or 'expand' [default:
none]
-F FEATURE, --feature=FEATURE
Enable additional Webkit features ('javascript',
'plugins')
-c COOKIE, --cookie=COOKIE
Add this cookie. Use multiple times for more cookies.
Specification is value of a Set-Cookie HTTP response
header.
-w SECONDS, --wait=SECONDS
Time to wait after loading before the screenshot is
taken [default: 0]
-t SECONDS, --timeout=SECONDS
Time before the request will be canceled [default: 0]
-W, --window Grab whole window instead of frame (may be required
for plugins)
-T, --transparent Render output on a transparent background (Be sure to
have a transparent background defined in the html)
--style=STYLE Change the Qt look and feel to STYLE (e.G. 'windows').
--encoded-url Treat URL as url-encoded
-d DISPLAY, --display=DISPLAY
Connect to X server at DISPLAY.
--debug Show debugging information.
--log=LOGFILE Select the log output file
注目すべきオプションは、幅と高さの設定です。
トラブルシューティング
cygwinを使用して、私はwebkit2png: cannot connect to X server :0.0
。これを修正するには(すでにexport DISPLAY=0.0
)、X-Serverを起動する必要がありました。 cygwinでは、これは2番目のターミナルでstartxwin
を実行することで実行できます。まずcygwinセットアップでインストールしてください。
別の可能な解決策は、GrabzItの無料の PythonのHTML to Image API を使用することです。次に、HTMLをPDFこのようなコードに変換します。
import GrabzItClient
grabzIt = GrabzItClient.GrabzItClient("APPLICATION KEY", "APPLICATION SECRET")
grabzIt.HTMLToImage("<html><b>Bold text</b></html>")
grabzIt.SaveTo("test.png")
完全な開示私はAPI作成者です。