Сбой порядка вкладок itext 7

#itext7

#itext7

Вопрос:

Файлы, которые должны демонстрировать UA поддержки в iText7 и предоставляются как часть руководства по запуску, не проходят полную проверку доступности. Этот тест доступен в Adobe Acrobat Pro.

Я протестировал следующие файлы: cmp_quick_brown_fox_PDFUA.pdf и cmp_united_states_PDFA-3a.pdf

Какой API можно использовать, чтобы сделать их совместимыми? Есть ли план по устранению этой проблемы? Спасибо за вашу помощь.

Эта ошибка, продемонстрированная Adobe Acrobat Pro

и здесь также

Комментарии:

1. Пожалуйста, покажите достаточно кода, чтобы воспроизвести проблему.

2. cmp_united_states_PDFA-3a.pdf проходит предварительную проверку для 3B, 3A и 3U для меня

3. Я обновил вопрос, чтобы лучше проиллюстрировать проблему. Здесь нет пользовательского кода; это все примеры iText, как указано. Я ценю вашу помощь.

Ответ №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:tempresult.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()
  

Я обнаружил, что мне нужно установить для свойства immediateFlush значение false при создании объекта Document, чтобы иметь возможность перебирать страницы перед закрытием документа.

Ответ №2:

Один из способов устранить проблему для 7.0.1 более ранних версий — вручную установить /Tabs ключ в значение /S , как предложено.

В 7.0.2 и на эта проблема устранена, и по умолчанию вы получите помеченные документы, соответствующие проверке порядка вкладок.

Кстати, с 7.0.2 этого момента вы также можете использовать setTabOrder удобный метод PdfPage для изменения порядка вкладок.

Комментарии:

1. Пожалуйста, обратите внимание, что на дату этого ответа 7.0.2 версия еще не опубликована, но она будет выпущена очень скоро, и ответ будет полезен для людей, которые позже столкнутся с этим вопросом и захотят обновиться.