1

我习惯于将xclippng 文件复制/粘贴到 libreoffice writer 中。

我使用的命令是:

xclip -selection clipboard -t "image/png" -i <path_to_file>

现在,我想复制/粘贴 svg 图像,但我不知道什么是合适的“目标”选项。

我尝试了许多不同的 -t 参数,例如:

xclip -selection clipboard -t "image/svg" -i <path_to_file>
xclip -selection clipboard -t "image/svg+xml" -i <path_to_file>
xclip -selection clipboard -t 'application/x-openoffice-drawing;windows_formatname="Drawing Format"' -i <path_to_file>

它几乎可以使用以下命令,但图像以光栅格式而不是 svg 格式粘贴:

xclip -selection clipboard -t 'application/x-openoffice-emf;windows_formatname="Image EMF"' -i <path_to_file>
xclip -selection clipboard -t 'application/x-openoffice-wmf;windows_formatname="Image WMF"' -i <path_to_file>

我可以使用 ctrl+c/ctrl+v 将 svg 文件复制/粘贴到 libreoffice 写入,但我想通过命令行进行,最好使用xclip. 有没有办法做到这一点?任何帮助表示赞赏。

顺便说一句,我在 Ubuntu 18.04 上,我使用的是 xclip 0.12 版。

4

1 回答 1

1

根据我的经验,LibreOffice 似乎……</p>

  • 无法直接从剪贴板粘贴 SVG 代码,但是……</li>
  • 能够粘贴您在剪贴板中为其提供文件 URI 的 SVG 文件。具体来说:
  1. 我没有运气尝试通过 xclip 将 SVG 代码直接粘贴到 LibreOffice 到剪贴板选择……没有让它与任何目标名称一起使用,以及我确实从其他一些应用程序获得复制/粘贴图像的情况就像您所经历的那样,导入 LibreOffice 的不是作为 SVG 矢量数据而是作为光栅图形导入的。但:

  2. 以下(粘贴URI而不是直接的SVG代码)对我有用:
    echo "file://<path_to_file>" |xclip -in -selection "CLIPBOARD" -verbose -target text/uri-list
    它似乎也只适用于没有“file://”uri方案前缀的路径:
    echo "<path_to_file>" |xclip -in -selection "CLIPBOARD" -verbose -target text/uri-list
    它似乎(主要)适用于远程URL而不是本地文件 URIs……至少在原则上是这样。我刚刚成功尝试使用此 URI:
    https ://openclipart.org/download/187787/Flower-Christmas-Flower.svg

但是,LibreOffice 的 SVG 导入似乎存在问题(不仅是通过剪贴板导入,还包括通过 Insert->Image 显式导入时),其他程序似乎可以毫无问题地显示一些 SVG,尤其是维基百科上的数学公式(我相信wiki 使用 MathJax 将它们呈现为 SVG)。例如,以下来自 wikipedia 的 svg 将无法正确粘贴到 LibreOffice,即使我下载它并将其重命名为“foo.svg”并尝试显式导入它: https ://wikimedia.org/api/rest_v1/media /math/render/svg/6d4475fbd112aad0bedebebac14a4fa6b220de74

相反,通过剪贴板的导入也会在更复杂的 URL 上失败,即使它是 LibreOffice 本身没有问题的 SVG 文件(具有不太复杂的本地文件 URI),例如,这个文件原样失败:
https:/ /en.wikipedia.org/wiki/Special_relativity#/media/File:World_line.svg
但如果作为本地文件导入,则导入就好了。

于 2020-09-04T03:59:05.747 回答