Прежде всего, ваш код не завершен, поэтому мы даже не знаем, если вы вызываете setTagged()
для PdfDocument
экземпляра (который является обязательным для тегирования).
Но большая проблемачто beginMarkedContent
само по себе не добавляет никаких соединений из содержимого в дерево тегов.Лучший способ добавить эти соединения - использовать TagTreePointer
(если вы действительно хотите использовать низкоуровневый PdfCanvas
API).Вы можете манипулировать древовидной структурой с помощью TagTreePointer
и добавлять связи между деревом и контентом с помощью PdfCanvas#openTag
.
Кроме того, вы, похоже, пытаетесь добавить текст расширения (Eyes Wide Shut
) с помощью dict.put(PdfName.Span, new PdfString("Eyes Wide Shut"));
, но изС точки зрения синтаксиса PDF это выражение не делает ничего полезного.API TagTreePointer
также позволяет легко устанавливать текст расширения.
В целом полный код будет выглядеть следующим образом:
PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFilePath));
pdfDocument.setTagged();
PdfPage firstPage = pdfDocument.addNewPage();
PdfCanvas canvas = new PdfCanvas(firstPage);
TagTreePointer tagPointer = new TagTreePointer(pdfDocument);
tagPointer.setPageForTagging(firstPage);
tagPointer.addTag(StandardRoles.P).addTag(StandardRoles.SPAN);
canvas.beginText()
.setFontAndSize(PdfFontFactory.createFont(), 12)
.openTag(tagPointer.getTagReference())
.showText("Test for Accessibility")
.closeTag()
.stroke();
tagPointer.moveToParent().addTag(StandardRoles.SPAN).getProperties().setExpansion("Eyes Wide Shut");
canvas.openTag(tagPointer.getTagReference())
.newlineShowText("EWS")
.closeTag()
.endText();
pdfDocument.close();
Структура результирующего тега: