将 Raphael 画布下载为 SVG 或 PDF
我正在使用 Raphael 创建动态可视化。是否可以允许将 Canvas 上生成的图像下载为 SVG/PDF 或其他图像格式?
I am using Raphael to create a dynamic visualization. Is it possible to allow the image generated on the Canvas to be downloaded as a SVG/PDF or another image format?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这里缺少一些信息,即浏览器支持、服务器/客户端解决方案以及成本是否合适。所以我会尽力给你一个详尽的答案。
对于客户端解决方案,您可以使用 DocRaptor。只需将 SVG 树提供给 DocRaptor 这适用于生成 SVG 的浏览器(自 2005 年以来,除了版本 9 之前的 IE 之外)。请注意,DocRaptor 将文档转换为 PDF 需要付费。对于将 SVG 树转换为 PDF 的免费服务器端解决方案,我建议使用 wkhtmltopdf 如此中提出的回答。
对于 Raphaël 为其生成 VML 的 IE6-8,您可以使用 矢量转换器 创建 PHP 解决方案图书馆。从 VML 到 SVG 的转换完成后,将 SVG 发送到 DocRaptor(或 wkhtmltopdf)。
没有免费的客户端 VML/SVG ->适用于 VML 或 SVG 的 PDF 解决方案。要构建它意味着解释 SVG 和/或 VML,使用 JavaScript 创建 PDF(有 JS PDF library 尝试),并使用 一些 Flash 技术。我想还没有人尝试过建造它。我可能会。
There are pieces of information missing here, namely browser support, server-/client-side solution and whether costs are okay or not. So I'll try to give you an exhaustive answer.
For a client-side solution, you can use DocRaptor. Just feed the SVG tree to DocRaptor This works for the SVG-producing browsers (all since 2005 except for IE prior to version 9). Note that DocRaptor has a fee for converting documents into PDF. For a free server-side solution for converting an SVG tree to a PDF, I would suggest using wkhtmltopdf as proposed in this answer.
For IE6-8, which Raphaël produces VML for, you could create a PHP solution using the Vector Converter library. When the conversion from VML to SVG is finished, sent the SVG to DocRaptor (or wkhtmltopdf).
There is no free client-side VML/SVG -> PDF solution that works for VML or SVG. To build that would mean interpreting SVG and/or VML, creating a PDF from it using JavaScript (there are JS PDF library attempts), and sending it to the client using some Flash technique. I guess nobody has attempted to build that yet. I might.
pdfkit 似乎是可行的方法,使用 browserify 使节点代码在客户端运行。 这里有一个很好的演示
pdfkit seems to be the way to go, with using browserify to make the node code run client side. There is a nice demo here
您可以使用 canvg 和 canvas2image 库保存为图像
You can save as an image using canvg and canvas2image libraries