java - 如何在 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。
解决方案
文字绘画注意事项
曾经有一个额外的提示,
AbstractFOPTranscoder.KEY_STROKE_TEXT
(内容:)java.lang.Boolean
,但这个提示已被禁用。它用于强制将文本绘制为形状。今天的 PDF 转码器尽可能使用 PDF 操作来绘制文本。只有在特殊效果或转换等情况下,Batik 才会将文本转换为形状。文本输出为形状将对性能产生负面影响,并导致更大的 PDF。目前除了投入一些时间来改进 PDF 转码器中的文本输出之外,没有其他解决方法。欢迎帮助。
https://cwiki.apache.org/confluence/display/XMLGRAPHICSBATIK/PdfTranscoder#space-menu-link-content
推荐阅读
- c++ - 链表从原始指针创建 shared_ptr
- c - 客户端断开连接后 C 套接字 TCP 服务器失败
- java - Servlet 和 jsp,显示本地目录中的图像列表时出错
- python - log(n!) 的向量化计算
- node.js - 如何使用 Cloud Functions 中的“onFinalize”将 300Mb JSON 文件从 Firebase 存储导入数据库?
- c++ - 是否可以使用 c++11 中的模板元编程创建一个填充大小为 N 的向量
- c++ - OpenGL GLUT 鼠标左键单击覆盖按住鼠标右键
- mysql - 主机不允许连接到这个 mariaDB 服务器
- performance - 无法解释内存带宽数
- c++ - 在类中使用数组没有输出