我正在使用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时,以上代码才有效。