将 SVG 1.1 转换为 1.0?

将 SVG 1.1 转换为 1.0?

好的,因此使用 draw.io 桌面,我开始一个新的空白图表,并只绘制一个包含两行文本的文本框:

德拉维奥

然后我执行文件/导出为/SVG...,选择缩放 100%,取消选中“包含我的图表的副本”,点击导出,另存为test.svg- 结果是:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="81px" height="81px" viewBox="-0.5 -0.5 81 81" style="background-color: rgb(255, 255, 255);"><defs/><g><rect x="0" y="0" width="80" height="80" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 40px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Lucida Console; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Hello<br />World!</div></div></div></foreignObject><text x="40" y="44" fill="#000000" font-family="Lucida Console" font-size="12px" text-anchor="middle">Hello...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://desk.draw.io/support/solutions/articles/16000042487" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>

该文件在 Firefox 中可以正常打开:

Firefox 中的 svg

但是,如果我在 Inkscape 1.0.1 中打开它 - 文本并不完整:

svg-在 Inkscape 中

...如果我使用rsvg-convert(来自 mingw-w64-x86_64-librsvg 2.50.1-1,在 Windows 10 中的 MSYS2/MINGW64 shell 中)将此 SVG 转换为 PDF

rsvg-convert.exe -f pdf -o test.pdf test.svg

...然后我在 Firefox 中打开该 PDF,文本又被损坏了(如果我在 Adob​​e Reader 等中打开该 PDF,也会发生同样的情况):

Firefox 中的 PDF

从上面的 SVG 内容中我们可以看出,这里的完整消息应该是“Viewer 不支持完整的 SVG 1.1”,并且链接到https://desk.draw.io/support/solutions/articles/16000042487,这说明这是由于自动换行造成的——我要么必须关闭 Draw.io 中的自动换行(我不想要——我正是想绘制带有自动换行文本的框),要么导出为 PDF。

但是,我需要一个 .svg,它将进入 pandoc Markdown -> PDF 管道,并且由于它也使用 rsvg-convert,.svg 图像最终会嵌入文档中的错误。

所以,我在想 - 我能否以某种方式将这种 SVG1.1 文件(带有自动换行的文本)导出到 SVG1.0(每行换行文本一行文本)?如果 Inkscape 可以读取此文件,我就可以使用它--export-plain-svg- 但如上所示,Inkscape 也无法加载此 .svg 文件...

答案1

我知道您五个月前就问过这个问题,但我可能会为其他有类似问题的人解答。

在 draw.io 上,您可以使用打印功能获取 PDF。使用该功能,您可以将纸张尺寸调整为 A0 或根据图表尺寸调整为其他尺寸。

最后,您可以将 PDF 转换为 SVG 文件。我使用该链接:https://image.online-convert.com/fr/convertir-en-svg但你可以找到多个网站来做到这一点。

现在,您在 svg 文件中有了全文。我不知道之后是否可以修改它,但对于只想在 PowerPoint 上显示它的人来说,这是正确的。

希望它能帮助到别人!

答案2

特别是对于 drawio-desktop,在评论中发布#311(目前已关闭,因为过时了),René Beuchat 提供了 @emrick-pesce 答案的替代方案 - 导出为 PDF 并使用 Inkscape 转换为 EMF 格式 (增强型图元文件)。在我的测试中,EMF 中的格式保存正确。

  1. 保存或导出为 xx.pdf
  2. 使用 Inkscape 程序,打开或导入 xx.pdf
  3. 选择偏好:Poppler/Cairo --> 确定
  4. 另存为...并选择 xx.emf --> 确定

大功告成!您可以在 Word 中使用它并裁剪所需区域。

相关内容