C3: wkhtmltopdfによるPDF生成がc30.3.0で失敗する

作成日 2014年09月10日  ·  17コメント  ·  ソース: c3js/c3

wkhtmltopdfを使用してc3チャートを使用してhtmlからPDFドキュメントを生成する場合、最新バージョンのc3(0.3.0)により、wkhtmltopdfがエラー「警告: undefined:0 TypeError: 'undefined'は関数ではありません」をアナウンスします。 結果のPDFには、グラフではなく空白が表示されます。

チャートを水泳で生成するために使用されていた古いバージョンのc3。 これを円グラフと棒グラフのタイプで再現しました。

wkhtmltopdfを含む完全なhtml、css、javascriptパッケージは
http://burgan.whitevector.com/images/bug_report.zip

wkhtmltopdfの完全な出力:
shark @ virshark :〜/ bug_report $ sh generate_pdf.sh
ページの読み込み(1/6)
警告: undefined:0 TypeError: 'undefined'は関数ではありません
ページ数を数える(2/6)
リンクの解決(4/6)
ヘッダーとフッターの読み込み(5/6)
ページの印刷(6/6)
終わり

最も参考になるコメント

これは、 wkhtmltopdfQtWebKitを使用しているためだと思います。これは、新しいバージョンのc3全体で使用されている方法であるFunction.prototype.bind問題があります。 phantomjsエクスポーターを作成したとき、私は自分で同様の問題に取り組む必要がありました。 解決策は、この小さなポリフィルを追加することです。

Function.prototype.bind = Function.prototype.bind || function (thisp) {
  var fn = this;
  return function () {
    return fn.apply(thisp, arguments);
  };
};

私はwkhtmltopdf精通していませんが、レンダリングされるページのコンテキスト内でそのコードを実行する必要があります(c3 jsファイルの前にページに含めるだけで機能します)

全てのコメント17件

これは、 wkhtmltopdfQtWebKitを使用しているためだと思います。これは、新しいバージョンのc3全体で使用されている方法であるFunction.prototype.bind問題があります。 phantomjsエクスポーターを作成したとき、私は自分で同様の問題に取り組む必要がありました。 解決策は、この小さなポリフィルを追加することです。

Function.prototype.bind = Function.prototype.bind || function (thisp) {
  var fn = this;
  return function () {
    return fn.apply(thisp, arguments);
  };
};

私はwkhtmltopdf精通していませんが、レンダリングされるページのコンテキスト内でそのコードを実行する必要があります(c3 jsファイルの前にページに含めるだけで機能します)

ありがとう! 他のJavascriptの前にこれらの6行を挿入すると、問題が解決しました。

ありがとう! この問題は解決したようですので、閉じさせてください。

@yuvii
dwight-schrute-thank-you-cry-on-the-office

@yuviiあなたは素晴らしいです!
slothsome

同じ問題が発生しましたが、 vega / wkhtmltopdf@yuviiによる解決策は魅力のように機能しました。 どうもありがとう!

@yuviiあなたは王様です!

@yuviiありがとうございます!!!!!

グーグルの場合、 @ yuviiは
ありがとう。

素晴らしい@yuvii 。 Google MapsAPIが変更されたときに同じ問題が発生しました

どうもありがとう、これは私のdjango pdfkitの問題を完全に解決しました!

ありがとう@yuvii 。 私は解決策を探すのに何時間も費やしました:
Fabric.js> Html> wkhtmltopdf> .pdfファイルを使用してキャンバスに描画する
ブラウザのHTMLは正しいのですが、出力.pdfファイルに空白のキャンバスがありました。

fabric.jsにも同じ問題があるようです

これは、 wkhtmltopdfQtWebKitを使用しているためだと思います。これは、新しいバージョンのc3全体で使用されている方法であるFunction.prototype.bind問題があります。 phantomjsエクスポーターを作成したとき、私は自分で同様の問題に取り組む必要がありました。 解決策は、この小さなポリフィルを追加することです。

Function.prototype.bind = Function.prototype.bind || function (thisp) {
  var fn = this;
  return function () {
    return fn.apply(thisp, arguments);
  };
};

私はwkhtmltopdf精通していませんが、レンダリングされるページのコンテキスト内でそのコードを実行する必要があります(c3 jsファイルの前にページに含めるだけで機能します)

どうもありがとう、私の日を救った。 それはC3jsで私のために働いた。 チャートコンテナの幅を設定することが重要です。

これらのコメントは素晴らしいです。 私はもうコーディングしていません。その世界を去りましたが、時々このページにアクセスし、ニッチな問題の解決策として畏敬の念を抱き、5年間(非常に多くの人々)を助けてきました。 それはクレイジーです。

これは、 wkhtmltopdfQtWebKitを使用しているためだと思います。これは、新しいバージョンのc3全体で使用されている方法であるFunction.prototype.bind問題があります。 phantomjsエクスポーターを作成したとき、私は自分で同様の問題に取り組む必要がありました。 解決策は、この小さなポリフィルを追加することです。

Function.prototype.bind = Function.prototype.bind || function (thisp) {
  var fn = this;
  return function () {
    return fn.apply(thisp, arguments);
  };
};

私はwkhtmltopdf精通していませんが、レンダリングされるページのコンテキスト内でそのコードを実行する必要があります(c3 jsファイルの前にページに含めるだけで機能します)

ホリーモリー、あなたは永遠に私の心の中で特別な場所を持っています。 HighchartグラフはWebブラウザーで正しく機能していましたが、Wkhtmltopdfを使用してPDFに正しく変換されませんでした。 誰かが同じ問題を抱えている場合は、highchartスクリプトを呼び出す前に、createthat関数を追加するだけです。 4時間後にようやく解決策を見つけました。 また、WkhtmltopdfとHighchartで問題をデバッグできるようにするには、これらの引数「wkhtmltopdf.exe --javascript-delay 10000 --no-stop-slow-scripts --enable-javascript--debug-javascript」を追加することを忘れないでください。

これは、 wkhtmltopdfQtWebKitを使用しているためだと思います。これは、新しいバージョンのc3全体で使用されている方法であるFunction.prototype.bind問題があります。 phantomjsエクスポーターを作成したとき、私は自分で同様の問題に取り組む必要がありました。 解決策は、この小さなポリフィルを追加することです。

Function.prototype.bind = Function.prototype.bind || function (thisp) {
  var fn = this;
  return function () {
    return fn.apply(thisp, arguments);
  };
};

私はwkhtmltopdf精通していませんが、レンダリングされるページのコンテキスト内でそのコードを実行する必要があります(c3 jsファイルの前にページに含めるだけで機能します)

どうもありがとうございました。6本以上の線を差し込んだだけで、高さチャートで動作し、ほぼ3〜4時間デバッグしていました。

これは、 wkhtmltopdfQtWebKitを使用しているためだと思います。これは、新しいバージョンのc3全体で使用されている方法であるFunction.prototype.bind問題があります。 phantomjsエクスポーターを作成したとき、私は自分で同様の問題に取り組む必要がありました。 解決策は、この小さなポリフィルを追加することです。

Function.prototype.bind = Function.prototype.bind || function (thisp) {
  var fn = this;
  return function () {
    return fn.apply(thisp, arguments);
  };
};

私はwkhtmltopdf精通していませんが、レンダリングされるページのコンテキスト内でそのコードを実行する必要があります(c3 jsファイルの前にページに含めるだけで機能します)

私の日を救った。 一緒に何日も苦労していました:+1:

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

laurentdebricon picture laurentdebricon  ·  3コメント

alantygel picture alantygel  ·  3コメント

wojciechowskid picture wojciechowskid  ·  3コメント

Shugardude picture Shugardude  ·  4コメント

seubert picture seubert  ·  3コメント