PDFBox是否可以创建带标签的PDF(PDF / UA)?看起来PDFBox有一个API可以实现这个功能(包
使用以下代码,我生成了一个包含图像的PDF文件,NVDA屏幕阅读器(在我的情况下)识别它并读取“... graphic Alternate Description”。然而,无障碍检查器PAC 2显示错误:“图像对象未标记”。
org.apache.pdfbox.pdmodel.documentinterchange.taggedpdf
),但我找不到任何教程或代码示例。使用以下代码,我生成了一个包含图像的PDF文件,NVDA屏幕阅读器(在我的情况下)识别它并读取“... graphic Alternate Description”。然而,无障碍检查器PAC 2显示错误:“图像对象未标记”。
PDDocument doc = new PDDocument();
PDPage page = new PDPage();
doc.addPage(page);
PDDocumentCatalog documentCatalog = doc.getDocumentCatalog();
PDImageXObject pdImage = PDImageXObject.createFromFile(imagePath, doc);
PDPageContentStream contents = new PDPageContentStream(doc, page);
contents.drawImage(pdImage, 100, 600, pdImage.getWidth() / 2, pdImage.getHeight() / 2);
contents.close();
PDStructureTreeRoot treeRoot = new PDStructureTreeRoot();
PDStructureElement structureElement = new PDStructureElement(StandardStructureTypes.Figure, treeRoot);
structureElement.setPage(page);
PDMarkedContent markedImg = new PDMarkedContent(COSName.IMAGE, new COSDictionary());
markedImg.addXObject(pdImage);
structureElement.appendKid(markedImg);
structureElement.setAlternateDescription("Alternate Description");
treeRoot.appendKid(structureElement);
documentCatalog.setStructureTreeRoot(treeRoot);
// ....
doc.save(fileName);
你能提供一些关于这个主题的解释和/或代码示例吗?
PDPageContentStream
中编写PDStructureElement
。 - Leonid Muzyka