itext7 pdfHTML添加页面标题而没有PAC工具警告

时间:2018-08-23 11:58:52

标签: c# itext7

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

标签。 HTML代码:

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

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

<h1><p><span>Title

<p>标签是发出警告的原因。 然后返回PAC工具警告。不会得到任何警告

<h1><span>Title

请帮助我解决问题。 预先感谢

1 个答案:

答案 0 :(得分:2)

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

因此,在您的示例中,布局元素的结构大致为 public IActionResult Logon() { return View(); } HttpGet("auth")] public void Get(string client_id, string redirect_uri, string state, string scope, string response_type) { if(!isloggedOn) { LocalRedirectPermanent("Logon"); } } 。下面的代码要做的是找到一个段落并将其可访问性角色设置为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