蜡染:在Linux上的svg到pdf(没有X服务器)

与将SVG转换为PDF的方法相似,svg2pdf转换在Windows下成功运行,文本项目可在search结果中search。 它在linux(Ubuntu)下生成pdfs(使用-Djava.awt.headless = true来避免由于缺lessX11窗口服务器而导致的exception),但是文本项不可search,有时甚至被编码为图像。

是否有可能在Linux下保存PDF文本,我错过了一些运行时选项?

UPD:我可以以某种方式强制蜡染(SVGGraphics2D或SVGConverter)回退到默认字体,如果某些字体没有find?

按照下面的配方解决:

http://batik.2283329.n4.nabble.com/Placing-SVG-Text-into-PDF-td3778127.html

主要步骤:

  1. 用ant编译fop
  2. 将名称为pdf-transcoder.jar的fop-transcoder-allinone.jar复制到类路径中
  3. 将fop的lib目录下的xmlgraphics-commons-1.4.jar复制到classpath中

如果您想将字体从Windows复制到Linux,则只需将.ttf文件复制到正确的位置(注意:某些字体受版权保护,您需要获得安装这些字体的权限)。 没有必要把它们放到某种注册表中。

要使它们在Java中可用,您有两个选择:

  1. 在运行蜡染之前,您可以设置环境变量JAVA_FONTS

  2. 打开jre/lib目录中的font.properties文件,并将其设置为相应的字体目录:

     appendedfontpath=/usr/share/fonts/truetype 

安装imagemagick。 然后调用convert:

 convert doc.svg doc.pdf 

这将转换成PDF。

尝试为要使用的字体添加定义(使用url):

 <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="745" height="300" xml:space="preserve" xmlns:xml="http://www.w3.org/XML/1998/namespace"> <desc>TEST</desc> <defs> <style type="text/css"> @font-face { font-family: "font"; src: url('COMPLETE URL TO TTF FILE eg. http://example.com/font.ttf') format('truetype'); } </style> </defs> <g transform="translate(174.5 53)"> <text font-family="font" font-size="40" font-weight="normal" style="stroke: none; stroke-width: 1; stroke-dasharray: ; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: #333; opacity: 1;" transform="translate(-98.5 39)"> <tspan x="0" y="-26" fill="#333">TEXT THAT YOU WANT TO DISPLAY</tspan> </text> </g> </svg> 

我有同样的问题。 有一件事我忘了svg是type =“text / css”