与将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
主要步骤:
如果您想将字体从Windows复制到Linux,则只需将.ttf
文件复制到正确的位置(注意:某些字体受版权保护,您需要获得安装这些字体的权限)。 没有必要把它们放到某种注册表中。
要使它们在Java中可用,您有两个选择:
在运行蜡染之前,您可以设置环境变量JAVA_FONTS
打开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” 。