C3: Pembuatan PDF oleh wkhtmltopdf gagal dengan c3 0.3.0

Dibuat pada 10 Sep 2014  ·  17Komentar  ·  Sumber: c3js/c3

Saat menggunakan wkhtmltopdf untuk menghasilkan dokumen PDF dari html dengan bagan c3, versi terbaru c3 (0.3.0) membuat wkhtmltopdf mengumumkan kesalahan "Peringatan: undefined:0 TypeError: 'undefined' bukan fungsi". PDF yang dihasilkan menunjukkan ruang kosong alih-alih bagan.

Versi c3 yang lebih lama digunakan untuk menghasilkan bagan dengan lancar. Saya telah mereproduksi ini dengan jenis diagram lingkaran dan batang.

Paket html, css & javascript lengkap dengan wkhtmltopdf ada di
http://burgan.whitevector.com/images/bug_report.zip

Output penuh dari wkhtmltopdf:
shark@virshark :~/bug_report$ sh generate_pdf.sh
Memuat halaman (1/6)
Peringatan: undefined:0 TypeError: 'undefined' bukan fungsi
Menghitung halaman (2/6)
Menyelesaikan tautan (4/6)
Memuat header dan footer (5/6)
Mencetak halaman (6/6)
Selesai

Komentar yang paling membantu

Saya menduga ini karena wkhtmltopdf menggunakan QtWebKit yang memiliki masalah dengan Function.prototype.bind , metode yang digunakan di seluruh versi baru c3. Saya sendiri harus mengatasi masalah serupa ketika saya menulis phantomjs eksportir . Solusinya adalah menambahkan polyfill kecil ini:

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

Saya tidak terbiasa dengan wkhtmltopdf tetapi Anda harus menjalankan kode itu dalam konteks halaman yang sedang dirender (cukup sertakan di halaman sebelum file c3 js dan itu akan berfungsi)

Semua 17 komentar

Saya menduga ini karena wkhtmltopdf menggunakan QtWebKit yang memiliki masalah dengan Function.prototype.bind , metode yang digunakan di seluruh versi baru c3. Saya sendiri harus mengatasi masalah serupa ketika saya menulis phantomjs eksportir . Solusinya adalah menambahkan polyfill kecil ini:

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

Saya tidak terbiasa dengan wkhtmltopdf tetapi Anda harus menjalankan kode itu dalam konteks halaman yang sedang dirender (cukup sertakan di halaman sebelum file c3 js dan itu akan berfungsi)

Terima kasih! Memasukkan 6 baris itu sebelum Javascript lain menyelesaikan masalah.

Terima kasih! Masalah ini terlihat terpecahkan, jadi tolong izinkan saya menutup.

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

@yuvii kamu luar biasa!
slothsome

Saya mengalami masalah yang sama tetapi dengan vega / wkhtmltopdf . Solusi oleh @yuvii bekerja seperti pesona. Terima kasih banyak!

@yuvii kamu adalah raja!

@yuvii Terima kasih!!!!!

Untuk googler ,
Terima kasih.

Luar biasa @yuvii . Saya mengalami masalah yang sama ketika Google Maps API berubah

Terima kasih banyak, ini benar-benar menyelesaikan masalah Django pdfkit saya!

Terima kasih @yuvii . Saya menghabiskan berjam-jam mencari solusi:
Menggambar di atas kanvas dengan Fabric.js > Html > wkhtmltopdf > .pdf file
Html di browser benar, tetapi file .pdf keluaran memiliki kanvas kosong.

Sepertinya fabric.js memiliki masalah yang sama

Saya menduga ini karena wkhtmltopdf menggunakan QtWebKit yang memiliki masalah dengan Function.prototype.bind , metode yang digunakan di seluruh versi baru c3. Saya sendiri harus mengatasi masalah serupa ketika saya menulis phantomjs eksportir . Solusinya adalah menambahkan polyfill kecil ini:

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

Saya tidak terbiasa dengan wkhtmltopdf tetapi Anda harus menjalankan kode itu dalam konteks halaman yang sedang dirender (cukup sertakan di halaman sebelum file c3 js dan itu akan berfungsi)

Terima kasih banyak, menyelamatkan hari saya. Ini bekerja untuk saya dengan C3js. Sangat penting untuk mengatur lebar wadah bagan.

Komentar ini luar biasa. Saya tidak lagi membuat kode, saya meninggalkan dunia itu, tetapi sesekali saya mengunjungi halaman ini, dan menyaksikan dengan takjub sebagai solusi yang saya temukan untuk masalah khusus telah membantu _begitu banyak orang_ selama 5 tahun dan seterusnya. Ini gila.

Saya menduga ini karena wkhtmltopdf menggunakan QtWebKit yang memiliki masalah dengan Function.prototype.bind , metode yang digunakan di seluruh versi baru c3. Saya sendiri harus mengatasi masalah serupa ketika saya menulis phantomjs eksportir . Solusinya adalah menambahkan polyfill kecil ini:

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

Saya tidak terbiasa dengan wkhtmltopdf tetapi Anda harus menjalankan kode itu dalam konteks halaman yang sedang dirender (cukup sertakan di halaman sebelum file c3 js dan itu akan berfungsi)

Holly Molly, Anda akan selamanya memiliki tempat khusus di hati saya. Grafik grafik tinggi berfungsi dengan baik di browser web tetapi tidak dikonversi dengan benar ke PDF dengan Wkhtmltopdf. Jika seseorang mengalami masalah yang sama, cukup tambahkan buat fungsi itu sebelumnya untuk memanggil skrip highchart Anda. Akhirnya menemukan solusi setelah 4 jam. Juga untuk dapat men-debug masalah Anda dengan Wkhtmltopdf dan Highchart jangan lupa untuk menambahkan argumen tersebut "wkhtmltopdf.exe --javascript-delay 10000 --no-stop-slow-scripts --enable-javascript --debug-javascript"

Saya menduga ini karena wkhtmltopdf menggunakan QtWebKit yang memiliki masalah dengan Function.prototype.bind , metode yang digunakan di seluruh versi baru c3. Saya sendiri harus mengatasi masalah serupa ketika saya menulis phantomjs eksportir . Solusinya adalah menambahkan polyfill kecil ini:

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

Saya tidak terbiasa dengan wkhtmltopdf tetapi Anda harus menjalankan kode itu dalam konteks halaman yang sedang dirender (cukup sertakan di halaman sebelum file c3 js dan itu akan berfungsi)

Terima kasih banyak, saya baru saja memasang 6 baris di atas dan berfungsi dengan grafik tinggi, sedang men-debugnya selama hampir 3 - 4 jam.

Saya menduga ini karena wkhtmltopdf menggunakan QtWebKit yang memiliki masalah dengan Function.prototype.bind , metode yang digunakan di seluruh versi baru c3. Saya sendiri harus mengatasi masalah serupa ketika saya menulis phantomjs eksportir . Solusinya adalah menambahkan polyfill kecil ini:

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

Saya tidak terbiasa dengan wkhtmltopdf tetapi Anda harus menjalankan kode itu dalam konteks halaman yang sedang dirender (cukup sertakan di halaman sebelum file c3 js dan itu akan berfungsi)

Menyelamatkan hari saya. Berjuang selama berhari-hari bersama :+1:

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

MarcusJT picture MarcusJT  ·  4Komentar

DieterSpringer picture DieterSpringer  ·  4Komentar

zachallia picture zachallia  ·  3Komentar

wojciechowskid picture wojciechowskid  ·  3Komentar

laurentdebricon picture laurentdebricon  ·  3Komentar