从客户端 DOM 序列化 SVG 的最佳方法是什么?

发布于 2024-07-08 06:29:02 字数 290 浏览 9 评论 0原文

我正在开发交互式 SVG/AJAX 界面,其中元素由用户即时创建和重新定位。 我希望支持用户将当前视图导出为 PNG 图像和/或 SVG 文档的功能。 我真的希望 SVG 文档尽可能简单(没有大量嵌套转换)。 有没有已经支持这个的框架?

我目前要求我的用户使用 Ctrl+Alt+PrntScrn 技术,并且我不想要求他们安装任何软件/插件。

服务器端代码现在是用 PHP 实现的,如果有帮助的话。 我已经实现了使用 ImageMagick 从“原始”文档(在客户端进行任何修改之前)生成 PNG 图像的功能。

I am working on interactive SVG/AJAX interfaces where elements are created and repositioned on-the-fly by users. I'd like to support the ability for users to export their current view to a PNG image and/or an SVG document. I'd really like the SVG document to be as simple as possible (without a lot of nested transforms). Is there any framework that already supports this?

I'm currently asking my users to use the Ctrl+Alt+PrntScrn technique, and I don't want to ask them to install any software/plugins.

The server-side code is implemented in PHP right now, if that helps. I've already implemented the ability to generate a PNG image from the "original" document (before the client makes any modifications) using ImageMagick.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

同展鸳鸯锦 2024-07-15 06:29:02

我假设您需要它仅在支持 SVG 的浏览器中工作。

Firefox、Safari 和 Opera 提供非标准 XMLSerializer API,因此您可以执行以下操作:

var svg = document.getElementById('svg_root'); // or whatever you call it
var serializer = new XMLSerializer();
var str = serializer.serializeToString(svg);

从那里,您可以将其发送到服务器并接收 PNG 作为返回。

这是 Mozilla 的有关从 DOM 序列化 XML 的开发人员页面

I'm assuming you need this to work only in browsers that support SVG.

Firefox, Safari, and Opera provide the non-standard XMLSerializer API, so you could do something like this:

var svg = document.getElementById('svg_root'); // or whatever you call it
var serializer = new XMLSerializer();
var str = serializer.serializeToString(svg);

From there, you can send it to the server and receive a PNG in return.

Here's Mozilla's developer page on serializing XML from the DOM.

雨落星ぅ辰 2024-07-15 06:29:02

Opera 实现了 W3C 的 DOM→XML 序列化器。 在 XML 模式下,innerHTML 在 Gecko 中返回格式正确的 XML。

HTML5 可以使用 toDataURL() 将其内容导出为 PNG 文件,并且可以在画布上绘制任何 元素使用 drawImage(),因此应该可以创建 ,将其绘制在画布上并导出为 data: URL。

Opera has implementation of W3C's DOM→XML serializer. In XML mode innerHTML returns well-formed XML in Gecko.

HTML5 <canvas> can export its content as PNG file using toDataURL() and it's possible to paint any <img> element on canvas using drawImage(), so it should be possible to create <img src="data:application/svg+xml,…">, paint it on canvas and export as data: URL.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文