При использовании wkhtmltopdf для создания PDF-документов из html с диаграммами c3 последняя версия c3 (0.3.0) заставляет wkhtmltopdf объявлять об ошибке «Предупреждение: undefined: 0 TypeError: 'undefined' не является функцией». В полученном PDF-файле вместо диаграммы отображается пустое пространство.
Старая версия c3 использовалась для быстрого создания диаграммы. Я воспроизвел это с типами круговых и гистограмм.
Полный пакет html, css и javascript с wkhtmltopdf находится по адресу
http://burgan.whitevector.com/images/bug_report.zip
Полный вывод wkhtmltopdf:
акула @ virshark : ~ / bug_report $ sh generate_pdf.sh
Загрузка страниц (1/6)
Предупреждение: undefined: 0 TypeError: 'undefined' не является функцией
Подсчет страниц (2/6)
Разрешение ссылок (4/6)
Загрузка верхних и нижних колонтитулов (5/6)
Печать страниц (6/6)
Сделанный
Я подозреваю, что это связано с тем, что wkhtmltopdf
использует QtWebKit
что имеет проблемы с Function.prototype.bind
, методом, используемым во всей новой версии c3. Мне самому приходилось решать подобную проблему, когда я писал экспортер phantomjs . Решение состоит в том, чтобы добавить этот небольшой полифилл:
Function.prototype.bind = Function.prototype.bind || function (thisp) {
var fn = this;
return function () {
return fn.apply(thisp, arguments);
};
};
Я не знаком с wkhtmltopdf
но вам нужно будет запустить этот код в контексте отображаемой страницы (просто включите его на страницу перед файлами c3 js, и он будет работать)
Спасибо! Вставка этих 6 строк до других сценариев Javascript решила проблему.
Спасибо! Кажется, проблема решена, поэтому позвольте мне закончить.
@yuvii
@yuvii ты
Я столкнулся с той же проблемой, но с vega / wkhtmltopdf
. Решение от @yuvii сработало
@yuvii ты король!
@yuvii Спасибо !!!!!
Для гуглеров @yuvii решил мою проблему с генерацией с помощью fullcalendar. Я часами искал решение.
Спасибо.
Потрясающий @yuvii . У меня возникла та же проблема, когда изменился API Карт Google.
Большое спасибо, это полностью решило мою проблему с django pdfkit!
Спасибо @yuvii . Я часами искал решение:
Рисование на холсте с помощью файла Fabric.js> Html> wkhtmltopdf> .pdf
HTML-код в браузере был правильным, но выходной файл .pdf имел пустой холст.
Похоже, у fabric.js такая же проблема
Я подозреваю, что это связано с тем, что
wkhtmltopdf
используетQtWebKit
что имеет проблемы сFunction.prototype.bind
, методом, используемым во всей новой версии c3. Мне самому приходилось решать подобную проблему, когда я писал экспортер phantomjs . Решение состоит в том, чтобы добавить этот небольшой полифилл:Function.prototype.bind = Function.prototype.bind || function (thisp) { var fn = this; return function () { return fn.apply(thisp, arguments); }; };
Я не знаком с
wkhtmltopdf
но вам нужно будет запустить этот код в контексте отображаемой страницы (просто включите его на страницу перед файлами c3 js, и он будет работать)
Большое спасибо, спасла мне день. Это сработало для меня с C3js. Важно установить ширину контейнера диаграммы.
Эти комментарии потрясающие. Я больше не кодирую, я покинул этот мир, но время от времени я захожу на эту страницу и с трепетом наблюдаю, как решение, которое я нашел для нишевой проблемы, помогло столь многим людям в течение 5 лет. Это безумие.
Я подозреваю, что это связано с тем, что
wkhtmltopdf
используетQtWebKit
что имеет проблемы сFunction.prototype.bind
, методом, используемым во всей новой версии c3. Мне самому приходилось решать подобную проблему, когда я писал экспортер phantomjs . Решение состоит в том, чтобы добавить этот небольшой полифилл:Function.prototype.bind = Function.prototype.bind || function (thisp) { var fn = this; return function () { return fn.apply(thisp, arguments); }; };
Я не знаком с
wkhtmltopdf
но вам нужно будет запустить этот код в контексте отображаемой страницы (просто включите его на страницу перед файлами c3 js, и он будет работать)
Холли Молли, ты навсегда останешься в моем сердце особенным. График Highchart работал правильно в веб-браузере, но не был должным образом преобразован в PDF с помощью Wkhtmltopdf. Если у кого-то такая же проблема, просто добавьте эту функцию перед вызовом сценария highchart. Наконец нашел решение через 4 часа. Также, чтобы иметь возможность отлаживать вашу проблему с помощью Wkhtmltopdf и Highchart, не забудьте добавить аргумент «wkhtmltopdf.exe --javascript-delay 10000 --no-stop-slow-scripts --enable-javascript --debug-javascript»
Я подозреваю, что это связано с тем, что
wkhtmltopdf
используетQtWebKit
что имеет проблемы сFunction.prototype.bind
, методом, используемым во всей новой версии c3. Мне самому приходилось решать подобную проблему, когда я писал экспортер 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 часа.
Я подозреваю, что это связано с тем, что
wkhtmltopdf
используетQtWebKit
что имеет проблемы сFunction.prototype.bind
, методом, используемым во всей новой версии c3. Мне самому приходилось решать подобную проблему, когда я писал экспортер phantomjs . Решение состоит в том, чтобы добавить этот небольшой полифилл:Function.prototype.bind = Function.prototype.bind || function (thisp) { var fn = this; return function () { return fn.apply(thisp, arguments); }; };
Я не знаком с
wkhtmltopdf
но вам нужно будет запустить этот код в контексте отображаемой страницы (просто включите его на страницу перед файлами c3 js, и он будет работать)
Спас мой день. Целыми днями боролись вместе: +1:
Самый полезный комментарий
Я подозреваю, что это связано с тем, что
wkhtmltopdf
используетQtWebKit
что имеет проблемы сFunction.prototype.bind
, методом, используемым во всей новой версии c3. Мне самому приходилось решать подобную проблему, когда я писал экспортер phantomjs . Решение состоит в том, чтобы добавить этот небольшой полифилл:Я не знаком с
wkhtmltopdf
но вам нужно будет запустить этот код в контексте отображаемой страницы (просто включите его на страницу перед файлами c3 js, и он будет работать)