html - 如何从 HTML 中提取和保存 SVG?
问题描述
我会从这个网站提取 SVG 背景:https ://www.jegy.hu/program/a-nagy-gatsby-103655/720007
但是当我保存它时:
<svg xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
preserveAspectRatio="xMidYMin"
width="1000"
height="1000"
id="svg19807"
sodipodi:docname="3348_structure_háttér.svg"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
style="transform-origin: left top; transform: translate3d(0px, 0px, 0px) scale(0.53);">
<metadata id="metadata19813">
<rdf:rdf>
<cc:work rdf:about="">
<dc:format>image/svg+xml</dc:format>
我收到了这个错误:
Entity 'nbsp' not defined
我在这里红色这个案例:如何在 svg 中显示 html 编码值?
但我无法使用。
那么这个SVG是如何具体的以及如何保存它以便能够将它作为图像打开。
解决方案
不幸的是,没有可靠的方法可以做到这一点,尤其是。用于由 JS 动态生成/修改的 svg。设计软件和网络浏览器在它们支持的 svg 标签以及它们如何呈现它们所支持的标签方面千差万别。Web 浏览器通常非常松散,甚至会尝试呈现最混乱的标记,而设计软件往往相反。
此工具有助于“清理”已被网页破坏的 svg 标记。https://jakearchibald.github.io/svgomg/
我将您想要的 svg 粘贴到工具中,我得到的只是:https ://imgur.com/fj7bDu6 所以我在文本编辑器中检查了标记,文件末尾有一个文本元素不属于任何组。它的 innerXML 仅包含可疑的“nbsp;”。又名非破坏空间。如果我删除那个容器元素,突然我的设计软件会打开 SVG 而没有任何警告。但不幸的是,它看起来仍然不“完整”,事实上,它看起来与它在网络工具中的外观相同。见:https ://imgur.com/1XiMg32
我去更仔细地检查了标记,除了在每个 XML 元素上都有数千个不必要的冗余标记属性之外,似乎没有任何问题太大,所以我怀疑该图形比单个 SVG 更多.
如果您想自己弄乱它,这是稍微修改过的版本 - https://wtools.io/paste-code/b7vg
编辑 - 请参阅此讨论tspan 元素的背景颜色 我怀疑这就是为什么您的 SVG 中缺少这么多内容的原因。除了少数 path 和 rect 元素之外,您的 svg 主要由数百个 text / tspan 元素组成(我假设)用于座位 / 部分显示。在 tspans 上设置背景颜色不是 SVG 规范的一部分,只能使用 HTML/CSS/JS 完成。因此,如果您尝试在 Inkscape 或类似工具中进行编辑,任何彩色的 tspan 要么看起来不可见,要么只显示它们的文本
推荐阅读
- javascript - 如何选择没有其他div的div
- python - 使用火花流读取脚本的输出输出
- javascript - 如何在 div 中提交来自某些表单的所有数据?
- azure - 天蓝色广告。授权流程是否需要从浏览器调用开始以获取桌面应用程序的授权令牌?
- reactjs - 使用 babel、nyc 和 istanbul 插件从 Cypress 获取代码覆盖率?
- r - 为什么我的一些小提琴图对于离散的音阶看起来“波浪状”?
- react-native - 如何在react-native中使用图像上方的加载指示器显示图像从一个到另一个的渐进变化
- verilog - 为什么在 DRAM 中执行代码后将 Rocket Chip 困在 FPGA 上
- postgresql - 如何减去两个总和列的结果
- swiftui - SwiftUI 页面控件实现