2016-10-17 2 views
2

Файлы, которые должны продемонстрировать поддержку UA в iText7 и предоставлены в качестве части руководства по запуску Jump Start, не могут пройти полную проверку доступности. Этот тест доступен в Adobe Acrobat Pro.itext 7 Tab order - Failed

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

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

This error as demonstrated by Adobe Acrobat Pro

and here also

+0

Просьба показать достаточно кода, чтобы воспроизвести проблему. – mkl

+0

cmp_united_states_PDFA-3a.pdf передает предполетную запись для 3B, 3A и 3U для меня –

+0

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

ответ

1

Для обеспечения PDF/соответствия UA, перед вызовом document.close() я называю метод, который я написал, который устанавливает свойство ушки на каждой сгенерированной страницы, чтобы следовать структуре документа:

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 я должен установить для свойства promptFlush значение false, чтобы иметь возможность выполнять итерацию по страницам перед закрытием документа.

0

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

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

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

+0

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