【问题标题】:itext7 pdfHTML add page title without PAC tool warningsitext7 pdfHTML 添加页面标题而没有 PAC 工具警告
【发布时间】:2018-08-23 11:58:52
【问题描述】:

我将使用 itext7 创建可访问性 pdf。在 html 文件中使用标签添加页面标题时,它会收到警告“可能不恰当地使用 P 结构元素”。原因是 iText 添加了额外的

标签内的标签。 HTML 代码:

<!DOCTYPE html>
    <html>
      <body>
         <h1>Title</h1>
      </body>
    </html>

当我使用 iText7 pdfHTML 插件生成 pdf 时,它显示如下;

<h1><p><span>Title

&lt;p&gt; 标签是警告的原因。 然后它返回 PAC 工具警告。没有得到任何警告,应该是,

<h1><span>Title

请帮我解决问题。 提前致谢

【问题讨论】:

    标签: c# itext7


    【解决方案1】:

    您可以根据需要自定义相应的标签工作者。您可以获得由标签工作者生成的结果布局元素并对其进行操作。特别是,如果需要,您可以显式指示元素不在标记结构树中创建节点。

    因此,对于您的示例,布局元素的结构大致为Div &lt;- Paragraph &lt;- "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);
    

    【讨论】:

    • 非常感谢阿列克谢。它对我有用,真的很有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    相关资源
    最近更新 更多