2

应该在 iText7 中演示支持 UA 并作为 Jump Start 教程的一部分提供的文件未能通过可访问性完整检查。此测试在 Adob​​e Acrobat Pro 中可用。

我测试了以下文件: cmp_quick_brown_fox_PDFUA.pdf 和 cmp_united_states_PDFA-3a.pdf

可以使用什么 API 使它们合规?有解决这个问题的计划吗?谢谢你的帮助。

Adobe Acrobat Pro 演示的此错误

还有这里

4

2 回答 2

1

为了确保 PDF/UA 合规性,在调用 document.close() 之前,我调用了我编写的一个方法,该方法将每个生成的页面上的 tabs 属性设置为遵循文档结构:

void setTabs(PdfDocument pdfDocument) {

    int numPages = pdfDocument.getNumberOfPages();

    for (int i = 1; i <= numPages; i++) {
        PdfPage page = pdfDocument.getPage(i);
        page.put(new PdfName("Tabs"), PdfName.S);
    }
}

例如:

String dest = ("C:\temp\result.pdf");
PdfWriter writer = new PdfWriter(dest, new WriterProperties().addXmpMetadata());
PdfDocument pdfDoc = new PdfDocument(writer);
Document document = new Document(pdfDoc, PageSize.LETTER, false);

pdfDoc.setTagged();
pdfDoc.getCatalog().setViewerPreferences(new PdfViewerPreferences().setDisplayDocTitle(true));
pdfDoc.getCatalog().setLang(new PdfString("en-US"));
PdfDocumentInfo info = pdfDoc.getDocumentInfo();
info.setTitle("The Title");

Paragraph p = new Paragraph();       
p.add(new Text("Hello World");
document.add(p);

setTabs(pdfDoc);
document.close()

我发现我必须在创建 Document 对象时将 immediateFlush 属性设置为 false,以便能够在关闭文档之前遍历页面。

于 2017-02-03T17:50:15.100 回答
0

解决7.0.1早期版本问题的一种方法是按照建议手动将/Tabs键设置为值/S

此问题已修复,默认情况7.0.2下,您将获得符合标签顺序检查的标记文档。

顺便说一句,从7.0.2on 开始,您还可以使用setTabOrder便捷方法 onPdfPage更改标签顺序。

于 2017-02-03T20:22:47.110 回答