IText7> Как добавить содержимое PdfCanvas как PdfName.Figure для PDF / UA Доступность - PullRequest
0 голосов
/ 28 декабря 2018

Я хотел бы добавить элемент в PdfCanvas, коды, как показано ниже.Почему я не вижу «Рисунок» в теге документа?

PdfCanvas canvas = new PdfCanvas(pdf.addNewPage());
canvas.beginText();
canvas.setFontAndSize(font, 12);
canvas.showText("Test for Accessibility");
canvas.stroke();

PdfDictionary dict = new PdfDictionary();
dict.put(PdfName.Span, new PdfString("Eyes Wide Shut"));      
canvas.beginMarkedContent(PdfName.Figure, dict);
canvas.newlineShowText("EWS");
canvas.endMarkedContent();
canvas.endText();

1 Ответ

0 голосов
/ 01 января 2019

Прежде всего, ваш код не завершен, поэтому мы даже не знаем, если вы вызываете 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();

Структура результирующего тега:

tag structure

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...