应该在 iText7 中演示支持 UA 并作为 Jump Start 教程的一部分提供的文件未能通过可访问性完整检查。此测试在 Adobe Acrobat Pro 中可用。
我测试了以下文件: cmp_quick_brown_fox_PDFUA.pdf 和 cmp_united_states_PDFA-3a.pdf
可以使用什么 API 使它们合规?有解决这个问题的计划吗?谢谢你的帮助。
应该在 iText7 中演示支持 UA 并作为 Jump Start 教程的一部分提供的文件未能通过可访问性完整检查。此测试在 Adobe Acrobat Pro 中可用。
我测试了以下文件: cmp_quick_brown_fox_PDFUA.pdf 和 cmp_united_states_PDFA-3a.pdf
可以使用什么 API 使它们合规?有解决这个问题的计划吗?谢谢你的帮助。
为了确保 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,以便能够在关闭文档之前遍历页面。
解决7.0.1
早期版本问题的一种方法是按照建议手动将/Tabs
键设置为值/S
。
此问题已修复,默认情况7.0.2
下,您将获得符合标签顺序检查的标记文档。
顺便说一句,从7.0.2
on 开始,您还可以使用setTabOrder
便捷方法 onPdfPage
更改标签顺序。