C3: wkhtmltopdf 生成 PDF 失败,c3 0.3.0

创建于 2014-09-10  ·  17评论  ·  资料来源: c3js/c3

当使用 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 文件之前,它就会工作)

所有17条评论

我怀疑这是因为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
dwight-schrute-thank-you-cry-on-the-office

@yuvii你太棒了!
slothsome

我遇到了同样的问题,但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:

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

udhaya2kmrv picture udhaya2kmrv  ·  3评论

ivarkallejarv picture ivarkallejarv  ·  3评论

wojciechowskid picture wojciechowskid  ·  3评论

mwho picture mwho  ·  3评论

snkashis picture snkashis  ·  4评论