レンダリングされたページのファイルへのダンプをサポートする node.js 用のヘッドレス ブラウザはありますか? phantomjsがファイルへのレンダリングをサポートしていることは知っていますが、node.js では実行されません。zombie.jsが node.js ヘッドレス ブラウザであることは知っていますが、ファイルへのレンダリングはサポートしていません。
6 に答える
phantomjs と同様に機能するものを見つけられるとは思えません。レンダリングを非同期バックエンド プロセスとして扱い、メインの node.js プロセスのサブプロセスでファントムを実行して、1 日と呼びます。Web ページのレンダリングは大変ですが、phantom は WebKit をベースにしているため、実際にレンダリングできます。既存のブラウザー レンダリング エンジンに基づいて構築されていないグラフィック ファイルに Web ページをレンダリングできるノード ライブラリが存在することはないと思います。しかし、いつかphantomjsがノードとよりシームレスに統合される日が来るかもしれません。
悪夢を試してみてください。電子を使用し、phantomjs よりも高速で、API が簡単で、最新の ES6 JavaScript を使用しています。
JavaScript 固有のものではありませんが、これは役立つかもしれません。
「 wkhtmltopdf 」と呼ばれる Webkit ベースのツールがあり、QT Web-kit ウィジェットを使用した JavaScript サポートが含まれていると理解しています。ページの視覚的表現 (場合によっては「スクリーンショット」) を PDF 形式で出力します。
FWIW、ここにも PHP バインディングがあります: php-wkthmltox
これは、少しオーバーヘッドのあるソリューションのように見えるかもしれません...
MozRepl プラグインで Mozilla Firefox を使用できます。基本的に、このプラグインは Firefox に telnet ポートを提供し、外部からブラウザを制御できるようにします。URL を開いたり、スクリーンショットを撮ったりすることができます。Xvfb サーバーで Firefox を実行すると、ヘッドレス モードで実行されます。
これで、node.js を使用して外部からブラウザーを制御するだけで済みます。誰かが Firefox の chrome.js 内に http に似たインターフェースを実装した例をいくつか見ました。したがって、http コマンドを実行してスクリーンショットを取得できます。その後、node.js から http 呼び出しを使用できます。これは奇妙に見えるかもしれませんが、実際にはうまくいくかもしれません。
スクリーンショットをトリガーするために、非同期モードで Perl Mojolicious を使用して、わずかに変更されたバージョンを本番環境で実行しています。ただし、小さな問題があります。プラグインが必要な場合は機能しますが、Flash は通常、可視領域にあるときにアクティブになりますが、これは発生しないため、ムービー/フラッシュが初期化されない可能性があります。