我正在使用jQuery/FLOT绘制图形,我希望用户能够下载图形的PDF版本。我正在使用ColdFusion编写PDF。创建图之后,我通过ajax将图div的html发送到使用cfdocument编写pdf的CF脚本。问题是,在PDF中,它只显示轴和标签,而不是实际的图形数据。有人知道一种方法来获取在画布上动态创建的实际图像吗?FLOT数据作为图像写入PDF
回答
我不认为这已在海军报已实施尚未见http://code.google.com/p/flot/issues/detail?id=175
感谢您的链接。我将采用cfchart和web图表XML文件 – Kelly 2010-04-15 16:09:17
退房CutyCapt(http://cutycapt.sourceforge.net/),似乎与海军报工作。
你也可以把你的canvas
的快照使用toDataURL()
和替代品在img
元素,PDF转换器应该能够处理:
var canvas = $("canvas.base")[0];
var tmpimg = canvas.toDataURL("image/png");
//console.log(tmpimg);
$("body").append('<img src="'+tmpimg+'"/>');
注意,产生的图像是只是的canvas
内容(即图形本身)并且不包括轴或图例。您可能必须在flot占位符中对图像进行一些棘手的替换/对齐操作,但它会为您提供一个可用的图像。
这只是对this question的接受答案的轻微重新工作,我认为这里有人可能会发现它有用。
您可以使用像phantomJS(WebKit引擎)这样的无头浏览器在服务器上呈现图表。
您只需要一个脚本获取URL并将输出呈现为控制台流的Base64编码字符串或写入图像。
据我所知,这是唯一的半浏览器独立的方式来做到这一点。
下面是phantomjs一个脚本,输出给网页的base64编码图像串:
var page = require('webpage').create();
var system = require('system');
var pageUrl = system.args[1];
page.viewportSize = { width: 1280, height: 720 };
page.open(pageUrl , function() {
console.log(page.renderBase64('PNG'));
phantom.exit();
});
这是实现图形或PDF图形的最稳健的方式。 htmltocanvas和canvastoimage脚本非常有限。 PhantomJS呈现包含画布的HTML,就像真正的Web浏览器一样。如果您为html-to-image/pdf设置自己的Web服务,并为要转换为图像或PDF的每个页面创建一个特殊的打印友好页面,此解决方案可能效果最佳。 – Ryan 2014-12-03 17:19:59
- 1. PDFBox的:写入HD图像PDF
- 2. 将flot图保存为图像
- 3. 将ITPC元数据写入图像
- 4. Libjpeg将图像写入内存数据
- 5. Java图像为PDF
- 6. 将数据作为层级写入Plist
- 7. 查看pdf作为图像流 - php
- 8. Flot线条图和大型JSON数据blob未格式化为Flot API规格
- 9. mod_pagespeed将所有图像重写为数据:图像格式
- 10. 将数据插入到Flot中
- 11. Laravel PDF插入WEBP图像
- 12. 将图像更改为嵌入数据
- 13. 从PDF中的图像读取数据
- 14. 带AJAX数据的Flot条形图
- 15. MYSQL数据+ PHP到FLOT图形
- 16. 使用Base64图像数据URI作为POST输入
- 17. 将PDF转换为图像
- 18. 图像为黑色PDF
- 19. Html(带图像)为PDF - Java
- 20. 将图像导出为PDF
- 21. 如何将提取的图像从pdf写入文件
- 22. C#PDF写作
- 23. 为Flot饼图兼容性序列化数据
- 24. 如何为Flot图创建动态数据系列?
- 25. 来自数据库的风格图像作为背景图像
- 26. 设置图像数据为图像src
- 27. 轮数x轴jquery flot图
- 28. FLOT中的对数图表
- 29. 为图像聚类数据编写相似度函数
- 30. javascript php mysql flot数据库
他们通过对下一个版本(0.8)画布文本插件添加了该支持。您可以使用该测试版:http://www.flotcharts.org/blog/2013/03/06/announcing-flot-08-beta/执行此操作后,您需要直接访问plot canvas元素并获取它作为图像,然后将图像上传到服务器并将其添加到您的PDF。 – Hoffmann 2013-03-14 16:50:48
您可以检查此答案:http://stackoverflow.com/a/30811190/1953178 – 2015-06-12 20:11:13