首页 > 解决方案 > 如何在 Apache FOP 2.3 中将字体呈现为形状

问题描述

我想将旧的 FOP 0.94 更新为新的 FOP 2.3。在旧的 FOP 中,字体被渲染为形状。我想保留这种行为,所以我尝试将以下内容设置为PDFTranscoder.:

PDFTranscoder pdfTranscoder = new PDFTranscoder();
pdfTranscoder.addTranscodingHint(PDFTranscoder.KEY_STROKE_TEXT, Boolean.TRUE);

但如果这样做,输出的 PDF 中不会呈现任何字体。如何告诉 FOP 将字体呈现为形状?

如果我删除:

pdfTranscoder.addTranscodingHint(PDFTranscoder.KEY_STROKE_TEXT, Boolean.TRUE);

然后文本在输出的 PDF 中,但不呈现为 shape

标签: javajava-8apache-fopbatikjava-12

解决方案


文字绘画注意事项

曾经有一个额外的提示,AbstractFOPTranscoder.KEY_STROKE_TEXT(内容:) java.lang.Boolean,但这个提示已被禁用。它用于强制将文本绘制为形状。

今天的 PDF 转码器尽可能使用 PDF 操作来绘制文本。只有在特殊效果或转换等情况下,Batik 才会将文本转换为形状。文本输出为形状将对性能产生负面影响,并导致更大的 PDF。目前除了投入一些时间来改进 PDF 转码器中的文本输出之外,没有其他解决方法。欢迎帮助。

https://cwiki.apache.org/confluence/display/XMLGRAPHICSBATIK/PdfTranscoder#space-menu-link-content


推荐阅读