当使用 wkhtmltopdf 从带有 c3 图表的 html 生成 PDF 文档时,最新版本的 c3 (0.3.0) 使 wkhtmltopdf 宣布错误“警告:未定义:0 类型错误:'未定义'不是函数”。 生成的 PDF 显示空白而不是图表。
旧版本的 c3 用于轻松生成图表。 我用饼图和条形图类型复制了这个。
带有 wkhtmltopdf 的完整 html、css 和 javascript 包位于
http://burgan.whitevector.com/images/bug_report.zip
wkhtmltopdf 的完整输出:
鲨鱼@virshark :~/bug_report$ sh generate_pdf.sh
加载页面 (1/6)
警告:未定义:0 类型错误:“未定义”不是函数
计数页数 (2/6)
解析链接 (4/6)
加载页眉和页脚 (5/6)
打印页数 (6/6)
完毕
我怀疑这是因为wkhtmltopdf
使用了QtWebKit
,这与Function.prototype.bind
有问题,这是在整个新版本的 c3 中使用的方法。 当我编写phantomjs exporter时,我不得不自己解决类似的问题。 解决方案是添加这个小polyfill:
Function.prototype.bind = Function.prototype.bind || function (thisp) {
var fn = this;
return function () {
return fn.apply(thisp, arguments);
};
};
我不熟悉wkhtmltopdf
但您需要在正在呈现的页面的上下文中运行该代码(只需将它包含在页面中的 c3 js 文件之前,它就会工作)
谢谢! 在其他 Javascript 解决问题之前插入这 6 行。
谢谢! 这个问题看起来已经解决了,所以请让我关闭。
@yuvii
@yuvii你太棒了!
我遇到了同样的问题,但vega / wkhtmltopdf
。 @yuvii的解决方案
@yuvii你是国王!
@yuvii谢谢!!!!!
对于谷歌人来说, @yuvii 用 fullcalendar解决了我的生成问题。 我花了几个小时寻找解决方案。
谢谢你。
太棒了@yuvii 。 当 Google Maps API 更改时,我遇到了同样的问题
非常感谢,这完全解决了我的 django pdfkit 问题!
谢谢@yuvii 。 我花了几个小时寻找解决方案:
使用 Fabric.js > Html > wkhtmltopdf > .pdf 文件在画布上绘图
浏览器中的 Html 是正确的,但输出 .pdf 文件有空白画布。
看起来fabric.js 有同样的问题
我怀疑这是因为
wkhtmltopdf
使用了QtWebKit
,这与Function.prototype.bind
有问题,这是在整个新版本的 c3 中使用的方法。 当我编写phantomjs exporter时,我不得不自己解决类似的问题。 解决方案是添加这个小polyfill: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 exporter时,我不得不自己解决类似的问题。 解决方案是添加这个小polyfill:Function.prototype.bind = Function.prototype.bind || function (thisp) { var fn = this; return function () { return fn.apply(thisp, arguments); }; };
我不熟悉
wkhtmltopdf
但您需要在正在呈现的页面的上下文中运行该代码(只需将它包含在页面中的 c3 js 文件之前,它就会工作)
霍莉莫莉,你将永远在我心中占有特殊的位置。 Highchart 图在网络浏览器上正常工作,但没有用 Wkhtmltopdf 正确转换为 PDF。 如果有人遇到同样的问题,只需在调用 highchart 脚本之前添加创建该函数即可。 4小时后终于找到了解决方案。 另外为了能够使用 Wkhtmltopdf 和 Highchart 调试您的问题,请不要忘记添加这些参数“wkhtmltopdf.exe --javascript-delay 10000 --no-stop-slow-scripts --enable-javascript --debug-javascript”
我怀疑这是因为
wkhtmltopdf
使用了QtWebKit
,这与Function.prototype.bind
有问题,这是在整个新版本的 c3 中使用的方法。 当我编写phantomjs exporter时,我不得不自己解决类似的问题。 解决方案是添加这个小polyfill: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 exporter时,我不得不自己解决类似的问题。 解决方案是添加这个小polyfill: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 exporter时,我不得不自己解决类似的问题。 解决方案是添加这个小polyfill:我不熟悉
wkhtmltopdf
但您需要在正在呈现的页面的上下文中运行该代码(只需将它包含在页面中的 c3 js 文件之前,它就会工作)