Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Inkscape';s SVG文件:导入图形的位置路径_Svg_Inkscape - Fatal编程技术网

Inkscape';s SVG文件:导入图形的位置路径

Inkscape';s SVG文件:导入图形的位置路径,svg,inkscape,Svg,Inkscape,Inkscape是一个非常好的工具,可以将PDF或EPS科学绘图导入空白页面,然后将箭头放在图形、文本、,制作科学图纸,将其组合到所需位置,然后保存为唯一的PDF页面,该页面可以作为图包含在latex文档中 Inkscape中的项目不仅可以保存为pdf格式,还可以保存为.svg文件。可以使用任何文本编辑器打开此文件,例如vim或gedit。项目的所有信息都保存在此文件中 大多数时候,我需要继续处理我曾经导入到inkscape项目中的原始PDF绘图。就我而言,inkscape界面中没有任何选项允许

Inkscape
是一个非常好的工具,可以将
PDF
EPS
科学绘图导入空白页面,然后将箭头放在图形、文本、,制作科学图纸,将其组合到所需位置,然后保存为唯一的PDF页面,该页面可以作为
包含在
latex
文档中

Inkscape
中的项目不仅可以保存为pdf格式,还可以保存为
.svg
文件。可以使用任何文本编辑器打开此文件,例如
vim
gedit
。项目的所有信息都保存在此文件中

大多数时候,我需要继续处理我曾经导入到inkscape项目中的原始PDF绘图。就我而言,inkscape界面中没有任何选项允许您知道导入inkscape项目的pdf图形的原始位置路径。例如,右键单击图形并打开
对象属性
,或者双击图形并检查在右侧打开的
对象
子面板,都不会通知所需的位置路径

我确信
.svg
文件中的某个地方写入了导入的pdf图形的路径。但是,写入
svg
文件的语言对我来说是新的

在Inkscape中,如何知道导入图形的位置路径? 或者导入图形的位置路径存储在
svg
文件的何处

作为一名MWE,我使用
inkscape
创建了一个
svg
文件,该文件只包含一个PDF绘图。这个文件有393行,所以在这里复制粘贴有点困难。因此,以下是指向此
svg
文件的链接:
不幸的是,信息不在那里。导入过程是破坏性的,因为您无法从生成的.svg文件重新创建原始文件,Inkscape开发人员似乎认为这意味着保留对原始文件的引用毫无意义

如果使用Inkscape打开PDF(与打开空文件并导入PDF相反),将找到最接近您正在搜索的内容。如果然后打开Edit->XML编辑器,您将在顶级
元素上找到一个属性
sodipodi:docname
,其中包含打开文件的原始名称sans path。不幸的是,一旦将项目另存为.svg,文件名就会被覆盖

最好是手动将原始文件信息保存为文档的一部分。由于SVG是一种XML格式,您或多或少可以自由选择您喜欢的元素/属性,只要它不在
SVG
命名空间中(从而成为通用格式浏览器和其他渲染器尝试解释的一部分),或者在
inkscape
sodipodi
命名空间中有意义(inkscape用于保存与其UI相关的信息)

存储文件信息时想到的是:打开文件->文档属性并选择“元数据”选项卡。使用“源”输入文件名的字段有点盗用,但只要该文件位于您自己的计算机上,就不会太远。但您应该知道,信息的存储方式是,当发布到internet上时,网络爬虫或任何寻找rdf/Dublin Core元数据的程序都可能读取该信息

在该文件中,您将发现以下信息:

<svg>
  <metadata>
    <rdf:rdf>
      <cc:Work>
        ...
        <dc:source>/path/to/file.pdf</dc:source>
      ...

...
/path/to/file.pdf
...

在一种更自由形式的方法中,您可以使用元素将文件路径与导入PDF的最顶层元素相关联,这将适用于多个导入的文件。您可以将其设置为“说明”输入对象属性对话框,它将是您为其设置的元素的直接子元素。SVG规范不限制该元素的内容。

该PDF的原始位置不会存储在SVG文件的任何位置

但我的建议是,如何在一个容易获取的地方记录下来,以便以后检索

  • 导入PDF后,选择所有新添加的对象并将其分组(Ctrl-G)
  • 如果XML编辑器尚未打开,请打开它(Shft-Ctrl-X)
  • 您刚刚创建的组应该已经被选中。您应该看到它有一个“id”属性。单击XML编辑器右上角的
    id
  • 在下面的id值框中输入PDF的原始URL或路径
  • 单击“设置”

  • 将来,如果您需要找到PDF的路径,只需选择正确的组。再次打开XML编辑器,瞧。

    菜单:文件->文档属性(或使用Ctrl+Shift+D快捷键)

    选项卡:元数据

    字段:源

    它在那里吗

    您的文件是:

    /home/david/fit1.pdf
    

    感谢您的回答。不幸的是,
    .svg
    项目通常包含多个pdf绘图,并且您的方法似乎只适用于识别一个原始绘图的路径?是否有方法写入项目中所有绘图的路径?在问题中,您可以找到包含两个pdf的
    svg
    项目的链接再次感谢。正如我所说,我的建议比遵循任何标准都更有创意。你可以自由地将任何内容写入XML文件中,只要它不干扰解释内容的程序。你可以在一个元素中写入多个文件路径,你可以为另一个元素或属性创建名称,一切由你决定给你。不,当你导入数字时,信息不在那里。只有在手动写下时,信息才在那里。非常感谢