Определить альтернативный текст для изображения PDF в документе без структурного дерева - PullRequest
1 голос
/ 25 августа 2011

Задача состоит в том, чтобы добавить текст «Alt» для изображений в документе PDF, чтобы программа чтения с экрана считывала текст.

В настоящее время мои документы PDF не имеют определенного дерева структуры.

Можно ли добавить такой текст к изображению, БЕЗ необходимости определять всю иерархию элементов структуры для всего документа? Я хочу добавить текст Alt с минимальными изменениями в документе PDF. Инструмент, который я использую для создания PDF, не очень хорош для создания структурных элементов. Следовательно, я хочу избежать необходимости определять структуру вообще.

То, что я ищу, - это поведение в стиле HTML, когда текст Alt добавляется локально в тег изображения, не требуя изменений в другом месте.

Спецификация PDF 1.6 гласит, что, начиная с PDF 1.5, можно добавить альтернативный текст для:

(PDF 1.5) Последовательность с помеченным содержимым (см. Раздел 10.5 «Помечено» Содержимое ») через запись Alt в списке свойств, прикрепленном к последовательность отмеченного содержимого с тегом Span.

Можно ли добавить такой диапазон без добавления каких-либо элементов структуры?

Мои тесты показывают "нет", но мои тесты могут быть не надежными. Тесты генерируют это:

ET
/Span <</Alt(This is alternate text.)>> BDC
q 180 0 0 15.84 36 747 cm /img0 Do Q
EMC
BT

в формате PDF 1.4. В документе не определено структурное дерево:

16 0 obj<</Type/Catalog/Pages 14 0 R>>

Затем я взломал первую строку и изменил версию PDF с 1.4 на 1.5. Конечный результат заключается в том, что альтернативный текст не читается Adobe Reader 10.

Ответы [ 2 ]

0 голосов
/ 24 февраля 2012

Хотя я не сомневаюсь, что iPDFdev в целом корректен, следующий код PDF заставляет NVDA читать произвольный текст, заменяя произвольную часть потока контента, несмотря на отсутствие структурного дерева, в документе PDF 1.4 открывается с помощью Adobe Reader 9:

/Span <</ActualText (Alt Text Here!) >> BDC
...
EMC

Инструмент, который я должен был использовать для той же задачи, был PDFClown 0.1.1 , который, я не думаю, может генерировать элементы структуры, поэтому я тоже экспериментировал с элементами Span. Код Java, который я использовал для генерации рабочего альтернативного текста, выглядит следующим образом:

PdfDictionary dict = new PdfDictionary();
dict.put(new PdfName("ActualText",false),new PdfString("Alt Text Here!"));
primitiveComposer.begin(new MarkedContent(new BeginMarkedContent(new PdfName("Span"), dict)));

// (do content stream stuff here)

primitiveComposer.end();

Кто-то, обладающий большими знаниями об этих программах, должен будет объяснить , почему это работает, несмотря на то, что он, по-видимому, не следует спецификации PDF, но я надеюсь, что это по-прежнему полезно для всех, кто поручил эту задачу.

0 голосов
/ 25 августа 2011

Чтобы иметь рабочий текст Alt, вам нужно определить дерево структуры, это требуется спецификацией PDF.Вы можете определить текст Alt так, как вы написали выше, без структурного дерева, но это нестандартно и может работать или не работать.

...