使用Apache FOP生成无障碍PDF遇文本未标记问题求助
解决Apache FOP生成无障碍PDF的“Text object not tagged”问题
核心解决思路
- 开启FOP的PDF/UA支持:在XSLT的
fo:root节点添加pdf-profile="PDF/UA-1"属性,同时在fop.xconf的PDF渲染器配置中开启无障碍开关:<renderers> <renderer mime="application/pdf"> <pdf-ua-mode>PDF/UA-1</pdf-ua-mode> <accessibility>true</accessibility> </renderer> </renderers> - 给文本块添加语义标识:对
fo:block元素指定role属性,映射PDF结构标签,比如普通段落用role="paragraph",标题类文本配合aria-level属性(如role="heading" aria-level="1")。示例:<fo:block role="paragraph">Hello...</fo:block> - 完善文档逻辑结构:必须通过
fo:bookmark-tree或fo:structure-tree定义文档层级,确保辅助设备能识别内容的逻辑关系。
字体配置补充
在conf\fop.xconf的<fonts>节点下添加以下代码配置本地Arial字体,注意URL必须包含file:协议和驱动器标识:
<fonts> ... <font kerning="yes" embed-url="file:///c:/Windows/Fonts/arial.ttf" embedding-mode="subset"> <font-triplet name="Arial" style="normal" weight="normal"/> </font> ... </fonts>
注意:若URL不包含
file:协议和驱动器标识,FOP将无法定位到字体文件。
内容的提问来源于stack exchange,提问作者mmo
相关产品推荐
相关产品推荐

