将SVG转换为以文本为轮廓的PDF

时间:2019-09-29 12:56:33

标签: pdf svg fonts apache-fop batik

我正在使用PDF转码器FOP2.3将SVG转换为PDF文档。我正在尝试在PDF转换时将字体/文本转换为形状。我正在使用以下属性,

Transcoder transcoder = new PDFTranscoder();    
    transcoder.addTranscodingHint(PDFTranscoder.KEY_PIXEL_UNIT_TO_MILLIMETER, (25.4f/72f));   
    transcoder.addTranscodingHint(PDFTranscoder.KEY_STROKE_TEXT, true);

当我提供KEY_STROKE_TEXT为true时,我的输出PDF文档完全不显示文本,或者有时以默认字体(Times / Sanseriff)显示。

如果T提供的KEY_STROKE_TEXT为假,则我的文本在PDF中正确显示,但以字体而不是形状显示。

这是我的FOP配置文件,带有一种自定义字体,

<?xml version="1.0" encoding="UTF-8"?>
 <fop version="1.0">
     <fonts>
    <font kerning="yes" embed-url="src/main/resources/static/custom-fonts/fullblock/fullblock.ttf" embedding-mode="subset">
               <font-triplet name="FullBlockSub-RegularCustom" style="normal" weight="normal"/>
           </font>
     </fonts>
 </fop>

我在这里做错什么了吗?请提出建议。

谢谢

我尝试调试PDFTranscoder代码,并注意到从未调用过PDFDocumentGraphics2D中的drawString(whic负责将文本转换为形状)方法。 也尝试在图形环境中注册字体,

GraphicsEnvironment ge = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment() ;
ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new File("src/main/resources/static/custom-fonts/hardball/hardball-new.ttf")));

仅当我将KEY_STROKE_TEXT用作false时,以上代码才有效。

0 个答案:

没有答案