我将使用itext7创建可访问性pdf。在html文件中使用标记添加页面标题时,会收到警告:“可能不适当地使用P结构元素”。原因是iText增加了额外的
标签里面的标签。HTML代码:
<!DOCTYPE html>
<html>
<body>
<h1>Title</h1>
</body>
</html>当我生成的pdf使用iText7 pdfHTML加载项,它显示如下;
<h1><p><span>Title<p>标记是发出警告的原因。然后返回PAC工具警告。不是为了得到任何警告,应该是,
<h1><span>Title请帮我解决这个问题。提前感谢
发布于 2018-08-23 19:17:54
如果需要,可以自定义相应的标记工作人员。您可以获得标记工作者生成的结果布局元素并对其进行操作。特别是,如果您愿意,可以显式地指示元素不要在标记结构树中创建节点。
因此,对于您的示例,布局元素的结构大致是Div <- Paragraph <- "Title"。下面的代码是查找一个段落并将其可访问性角色设置为null,这样就不会在标记树中创建节点。
自定义标签工人:
private static class CustomH1TagWorker extends HTagWorker {
public CustomH1TagWorker(IElementNode element, ProcessorContext context) {
super(element, context);
}
@Override
public IPropertyContainer getElementResult() {
IPropertyContainer baseResult = super.getElementResult();
if (baseResult instanceof BlockElement && ((BlockElement) baseResult).getChildren().size() == 1
&& ((BlockElement) baseResult).getChildren().get(0) instanceof Paragraph) {
((Paragraph) ((BlockElement) baseResult).getChildren().get(0)).getAccessibilityProperties().setRole(null);
}
return baseResult;
}
}创建ConverterProperties并调整TagWorkerFactory。确保将转换器属性传递给HtmlConverter。
ConverterProperties properties = new ConverterProperties();
properties.setTagWorkerFactory(new DefaultTagWorkerFactory() {
@Override
public ITagWorker getCustomTagWorker(IElementNode tag, ProcessorContext context) {
if (TagConstants.H1.equals(tag.name())) {
return new CustomH1TagWorker(tag, context);
}
return super.getCustomTagWorker(tag, context);
}
});
HtmlConverter.convertToPdf(inputStream, pdfDocument, properties);https://stackoverflow.com/questions/51985323
复制相似问题