将文本转换为服务器上的路径(svg)?

时间:2011-12-07 21:08:15

标签: php svg imagemagick inkscape

如何从TTF字体创建文本并将其转换为静态SVG路径?所以任何人都可以在插画中打开它并看到这个词(作为.SVG)。

我们的服务器是Debain,我们主要使用PHP进行后端编码。

很高兴使用Imagemagick或Inkscape - 无论如何完成它!

3 个答案:

答案 0 :(得分:9)

试试这个:

  1. 在Inkscape中创建一个svg模板文件(参见下面的示例)。
  2. 使用文本编辑器打开该文件,并为要更改的变量放置一些占位符标记:字体和文本。
  3. 创建一个网页,以便用户可以选择字体并编写文本。
  4. 在服务器中检索该数据。
  5. 阅读模板文件,并使用用户数据更改占位符标记。
  6. 通过命令行调用Inkscape。
  7. inkscape template.svg --export-text-to-path --export-id=maintext --export-pdf=new_file.pdf
    

    现在,我知道,我知道,你说你想要一个svg输出......我尝试了这个选项:

    --export-plain-svg=new_file.svg
    

    但根据Inkscape手册页:

    -T, --export-text-to-path
        Convert text objects to paths on export, where applicable (for PS, EPS, and PDF export).
    

    Soooo ...无法获得普通的svg导出和导出文本到路径:S ... BTW这应该填充为一个bug。

    您可以投放PDF,或再次致电:

    inkscape -l new_file.svg new_file.pdf
    

    其中......我知道,这是非常愚蠢的。不,真的,在Inkscape上提交错误:P

    这是示例Inkscape模板:

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <!-- Created with Inkscape (http://www.inkscape.org/) -->
    
    <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"
       version="1.1"
       width="440.29297"
       height="39.824219"
       id="svg2">
      <defs
         id="defs4" />
      <metadata
         id="metadata7">
        <rdf:RDF>
          <cc:Work
             rdf:about="">
            <dc:format>image/svg+xml</dc:format>
            <dc:type
               rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
            <dc:title></dc:title>
          </cc:Work>
        </rdf:RDF>
      </metadata>
      <text
         x="-3.4374955"
         y="30.390625"
         id="maintext"
         xml:space="preserve"
         style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:[FONT_PLACEHOLDER]"><tspan
           x="-3.4374955"
           y="30.390625"
           id="tspan3006"
           style="fill:#000000">[TEXT_PLACEHOLDER]</tspan></text>
    </svg>
    

    亲切的问候。

答案 1 :(得分:2)

您也可以告诉inkscape gui模式打开文件,然后发出commands。以下命令行输入将打开svg,选择所有节点,并将它们转换为路径。这将允许您将转换后的svg保存回svg。

inkscape -f your.svg --with-gui --verb EditSelectAll --verb ObjectToPath --verb FileSave --verb FileQuit

请注意,这将覆盖您的文件!

答案 2 :(得分:0)

甚至更简单,使用EasySVG,此库将文本转换为SVG定义。然后,您可以将此定义放在路径中,或者其他任何内容。

该定义基于字体的SVG文件,但您可以轻松地将TTF文件转换为SVG ...