2016-07-04 4 views
0

私が取り組む製品には、HTML5ダッシュボードに優れたグラフがあります。グラフは、Flotを使用してJavascriptでレンダリングされます。サーバー上のレンダリングクライアントのサイドチャート

このダッシュボードは、固定のスケジュールでPDFレポートとして毎日電子メールで送信されます。たとえば、毎日午前8時に電子メールで電子メールを送信したいとします。

私は、ページのHTML5ソースを取得し、Weasyprintを使用してPDFに結果HTML5のページを変換するためのPythonのRequests(すなわちrequest.getを行う)を使用したが、これは明らかに仕事に行くされていないと考えてきました。

Javascriptチャートは、適切なJavascriptサポートがあるブラウザで表示されない限りレンダリングされないため、最大の頭痛です。そのため、概要のアプローチではJavascriptグラフがレンダリングされません。

動的に生成されたHTML5ページをPDFに変換するには、どのような方法が推奨されますか?他の人たちはどうやってこれをするのですか?

+0

あなたはために働くことはないだろう、この – anu

+0

を達成するために、[toDataUrl()](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL)メソッドを使用することができます私はキャンバスをレンダリングし、Javascriptをサポートするサーバー側に何かが必要です。 – CadentOrange

+0

このメソッドを使用すると、キャンバスをイメージデータに変換してサーバーに送信できます。次に、サーバー側で任意のpdfライブラリを使用します。 [iText](http://itextpdf.com/)を使って、このイメージの一部としてpdfを生成します。そのpdfをメールなどで送るようにしてください。 – anu

答えて

2

PhantomJSが解決策です。これは、JavascriptグラフなどのダッシュボードをPDFにレンダリングできる、ヘッドレスWebKit実装です。

ダッシュボードをユーザーに電子メールで送信するPDFドキュメントに変換するために毎日実行されるバッチジョブを設定しました。オフに注意すべき

補遺

いくつかの他の事。 PhantomJSの現在の2.1ビルドでは、レンダーをPDFにクリップさせるバグがあります。修正は2.2に予定されています。 bug reportで詳しく説明されている一時的な回避策は、ドキュメントのCSSズームレベルを設定することです。次のCSSの断片が私のために働いています。

html { 
    zoom: 50%; 
} 
関連する問題