4

Javascriptコードを含むHTMLページがあります。画像に変換する前に、最初にレンダリングする必要があります。

私はwkhtmltoimage、PhantomJS、khtmltopng、webkit2png、PrinceXML、html2imageなどのプロジェクトを知っています。私はそれらのいくつかを実装しましたが、コマンドを実行するためにProcessを使用する必要のない純粋なJavaソリューションを見つけようとしています。どんな助けでも素晴らしいでしょう、ありがとう!

編集:私はCobraを調べましたが、JSサポートはまだ開発中であり、htmlファイルを適切に解析していないようです。

または、これを行う他の方法がある場合は、私に知らせてください。私は可能な限り最良の解決策を見つけようとしています。

4

2 に答える 2

1

純粋なJavaソリューションはありません。HTML5をサポートするブラウザをJavaで作成した人は誰もいません。

私はこれらのアプローチのいずれかを試してみます:

  1. env.js+ rhinoを使用して、JavaScriptを実行できるブラウザーをシミュレートします。これにより、たとえばFlyingSaucerを使用してレンダリングできるDOMが得られるはずです。

  2. SWTをクラスパス(およびプラットフォームのバイナリ)に追加します。これにはBrowser、システムのブラウザを使用してURLまたはHTML文字列をレンダリングするコンポーネントが含まれています。

ブラウザをヘッドレスモードで実行するには、おそらくSWTBotが必要です。

それが機能せず、Linuxを使用している場合は、メモリ内のXサーバーを起動Xvfbしてブラウザを開くことができます。またはvncserver、サーバーでデスクトップを起動するために使用できます。

[編集]プロジェクトphantomjsはあなたが望むことをするかもしれません:

PhantomJS(www.phantomjs.org)は、JavaScriptまたはCoffeeScriptでスクリプト化可能なヘッドレスWebKitです。
[...]
使用例:ヘッドレスWebテスト、サイトスクレイピング、ページレンダリング
マルチプラットフォーム、主要なオペレーティングシステムで利用可能:Windows、Mac OS X、Linux、その他のUnices
Web標準の高速でネイティブな実装:DOM、CSS、JavaScript、Canvas 、SVG。エミュレーションはありません!
Linux上の純粋なヘッドレス(X11)であり、継続的インテグレーションシステムに最適です。AmazonEC2でも動作します。

クイックスタートページでは、Webページを読み込んで画像にレンダリングする方法について説明しています。

于 2012-06-19T19:52:15.917 に答える
1

WebRendererを使用した解決策を見つけました。WebRendererは有料のソリューションであり、Swing、サーバー、およびデスクトップエディションがあります。2012年7月9日の時点で、SwingエディションはHTML5をサポートする唯一のエディションです。ただし、Swing Editionをサーバーで使用して、JFrameを作成せずに、ブラウザーをインスタンス化することで画像を変換できます。この質問を参照してください。

于 2012-07-09T18:31:55.590 に答える