使用 xclip 将 svg 图像复制并粘贴到 libreoffice writer

Copy and paste svg image to libreoffice writer using xclip

我习惯用xclip把png文件copy/paste转成libreoffice writer

我使用的命令是:

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

现在,我想 copy/paste svg 图片,但我不知道什么是合适的 "target" 选项。

我尝试了很多不同的 -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 copy/paste 将 svg 文件写入 libreoffice,但我想通过命令行完成,最好使用 xclip。有办法吗?感谢任何帮助。

顺便说一下,我使用的是 Ubuntu 18.04,我使用的是 xclip 版本 0.12。

根据我的经验,LibreOffice 似乎……

  • 无法直接从剪贴板粘贴 SVG 代码但是…
  • 能够粘贴您在剪贴板中为其提供文件 URI 的 SVG 文件。具体来说:
  1. 我没有运气尝试通过 xclip 将 SVG 代码直接粘贴到 LibreOffice 到剪贴板选择......没有让它与任何目标名称一起工作,以及我这样做的情况从其他应用程序获取 copy/pasted 图像到 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 而不是本地文件 URI……至少在原则上是这样。我刚刚成功尝试了这个 URI:
    https://openclipart.org/download/187787/Flower-Christmas-Flower.svg

但是,LibreOffice 的 SVG 导入似乎存在问题(不仅是通过剪贴板导入时,而且通过 Insert->Image 显式导入时也是如此),有些 SVG 其他程序似乎可以毫无问题地显示,尤其是数学公式在维基百科上(我相信维基使用 MathJax 将它们呈现为 SVG)。例如,维基百科中的以下 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
但如果作为本地文件导入会很好。