【问题标题】:Turning jQuery charts into PDFs将 jQuery 图表转换为 PDF
【发布时间】:2011-04-02 07:27:10
【问题描述】:

我找到了两个我喜欢的 jQuery 图表插件——flot 和 jqPlot。我正在考虑在我的网站前端使用其中之一。

但是,我还需要能够允许用户以 PDF 格式导出数据。理想情况下,我正在寻找一个纯 Python 解决方案,但可以一推就运行到 Java 或 PHP。生成图表的质量是最重要的因素。

我考虑过的选项是:

  • 在服务器上生成图表,并使用这些图表创建 PDF。我查看了 matplotlib 和其他几个 python 图表包,但这些图表看起来并不像 flot 或 jqPlot 那样完美。
  • 使用 Rhino 和 Env.js 在服务器上运行相同的 jQuery 代码,并以某种方式捕获生成的图表并将其插入 PDF。犀牛有可能吗?难度有多大?我看过 Rhino-canvas 项目,但它看起来已经过时了。

最好的方法是什么?如果我能让 Rhino 解决方案发挥作用,那就太好了,因为它可以保持前端和生成的 PDF 之间的一致性。

【问题讨论】:

    标签: jquery python charts


    【解决方案1】:

    将图形转换为图像

    据我了解,flot 绘制到画布元素(如果可用)。例如,我搜索了 导出画布内容 的示例并找到了 canvas2image。它可能是,也可能不是探索的途径。

    也见this StackOverflow question。从那个开始,导出图像可能非常简单(使用采用 mime 类型的Canvas.ToDataUrl(type)。我很确定它不会对 application/pdf 做任何有意义的事情......)。

    更新:好吧,看这里,canvas2image 的修改版本驻留在flotr 源:http://flotr.googlecode.com/svn/trunk/flotr/flotr/prototype/lib/canvas2image.js

    生成 PDF

    有一些解决方案可以在客户端的 JavaScript 中生成 PDF:

    最终结果

    将这两者结合起来,您可能会有一个解决方案。

    【讨论】:

      【解决方案2】:

      我建议再看看matplotlib

      图表是高度可定制的,看起来非常精美。当然,许多选项一开始可能会令人生畏。但是如果你知道怎么做,可以实现很多令人眼花缭乱的效果。

      例如,如果您想要阴影,请查看transforms tutorial

      此外,matplotlib 为您提供高 dpi 位图图像甚至 PDF 矢量图形。我不知道使用上面提到的 jQuery 库来获得更高分辨率的图形有多难。

      【讨论】:

        【解决方案3】:

        您可以在服务器上使用 Python 和 Qt 运行 headless webkit(渲染引擎),然后将其打印为 PDF。列出了使用 Qt 打印 PDF 所需的更改here,尽管它们可能不完整。

        此解决方案将只呈现页面,您可以将图表存储为单独的图像,或者按照建议的路径生成页面的完整 PDF。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-10-21
          • 2015-08-17
          • 2017-05-10
          相关资源
          最近更新 更多