2016-04-29 19 views
0

因此,我在Angular中有一个应用程序,它使用Chart.js在应用程序的某些视图中生成一些动态图表。 该应用程序还具有通过PDFMake Javascript库将某些数据导出为PDF格式的能力,这是相当基础的,但允许基本文本和图像输出到PDF文件。是否可以创建一个画布来提取图像数据而不实际渲染画布?

的问题是 - 我可以,动态的工厂中,我产生会由PDFMake库解析里面的数据,请执行以下操作:

  1. 创建一个Canvas元素,而无需渲染它,
  2. 将一个Chart.js图表​​分配给画布(我知道如何做到这一点),最重要的是:
  3. 从画布导出图像数据,因此我可以将图像数据转发到PDFMake,而无需将画布显示到最后-用户。它必须发生在代码背后。

可以将画布数据作为图像提取而不需要绘制canvas元素,甚至可以将其添加到DOM?

+0

您始终可以将画布放在主内容容器的后面,或者简单地将绝对定位放在较大的负位置上。当然它确实渲染,但不明显地给用户。 –

+0

但有没有任何方法不在页面上的任何位置放置画布,而是仅在内存中进行渲染/绘制?我在问可能的表现,可能会有数百个画布被添加和删除。 –

+0

你确定你甚至需要将一个画布附加到DOM上,以便将它渲染到自己的内存中吗?我不认为你需要把它放在DOM中。 – AgentME

回答

0

我做了一个快速测试,但ChartJS似乎没有接受使用document.createElement('canvas')创建的内存中画布,所以或者您可以将画布移出屏幕以避免显示。

+0

实际上它确实接受它,但似乎chartjs使用computedStyles来设置图表,并且我没有找到任何宽度或高度参数,所以最终只能得到0 * 0的画布。一个更简单的解决方法IMO是在调用“Chart”构造函数之前追加画布,并在以下位置直接删除它:http://jsfiddle.net/t25j7xve/ – Kaiido

+0

@Kaiido。是的,这就是我的测试所显示的 - 内部ChartJS错误与在dom中找不到canvas元素有关。 – markE

+0

啊,我使用的是verison 1.0.2,它没有抛出这样的错误。 V2确实。 – Kaiido