Wie füge ich mit PDFBox alternativen Text zum Bild in PDF hinzu?Java

Java-Forum
Anonymous
 Wie füge ich mit PDFBox alternativen Text zum Bild in PDF hinzu?

Post by Anonymous »

Ich versuche, mein PDF zu machen, das von der PDFBox -Java -Bibliothek zugänglich ist, und dies erfordert das Markieren der eingebetteten Bilder in der Datei, damit sie von einem Bildschirmleser gelesen werden kann. Über den PDF -Barrierefreiheitsprüfer vom PAC zeigt es immer noch, dass das QR -Code -Image nicht getagelt ist. Wie kann ich den alternativen Text dem QR -Code -Bild korrekt debuggen/hinzufügen? Vielen Dank!

Code: Select all

for (int pageidx = 0; pageidx < totalPage; pageidx++) {
PDPageContentStream contentstream = new PDPageContentStream(
doc, doc.getPage(pageidx), PDPageContentStream.AppendMode.APPEND, true);
PDPage page = doc.getPage(pageidx);

COSDictionary dict = new COSDictionary();
dict.setInt(COSName.MCID, mcid);
mcid++;

contentstream.beginMarkedContent(
COSName.IMAGE, PDPropertyList.create(dict));
contentstream.drawImage(image, x, y, px, py);
contentstream.endMarkedContent();

contentstream.close();

PDStructureTreeRoot root = new PDStructureTreeRoot();
doc.getDocumentCatalog().setStructureTreeRoot(root);

PDStructureElement parent =
new PDStructureElement(StandardStructureTypes.Figure, root);
root.appendKid(parent);

PDStructureElement element =
new PDStructureElement(StandardStructureTypes.Figure, parent);
element.setPage(doc.getPage(pageIndex));
element.setAlternateDescription("alternate");

dict.setString(COSName.ALT, "alternate");
PDMarkedContent marked = new PDMarkedContent(COSName.IMAGE, dict);
marked.addXObject(image);
element.appendKid(marked);
}

< /code>

Hier ist mein aktualisierter Code mit einigen angegebenen Referenzen, aber ich bin immer noch auf dasselbe Problem, aber nicht sicher, warum. Jeder Rat wäre wieder sehr geschätzt < /p>
            PDDocument doc = PDDocument.load(pdf);
PDDocumentCatalog catalog = doc.getDocumentCatalog();

catalog.setLanguage("en-US");
PDStructureTreeRoot root = new PDStructureTreeRoot();
catalog.setStructureTreeRoot(root);

COSDictionary parentTreeDict = new COSDictionary();
PDNumberTreeNode parentTree = new PDNumberTreeNode(parentTreeDict, parentTreeDict.getClass());
root.setParentTree(parentTree);
Map parentTreeMap = new HashMap();

PDImageXObject pdImageXObject = PDImageXObject.createFromByteArray(doc,image,"test");

for(int pageIndex = 0; pageIndex < totalPage; pageIndex++) {
PDPage page = doc.getPage(pageIndex);

PDPageContentStream pdPageContentStream = new PDPageContentStream(doc,page,PDPageContentStream.AppendMode.APPEND,true);
PDRectangle pdRectangle = doc.getPage(pageIndex).getCropBox();

page.setStructParents(pageIndex);

PDStructureElement elem = new PDStructureElement(StandardStructureTypes.Figure, root);
elem.setAlternateDescription("alternate description");
elem.setPage(page);
parentTreeMap.put(pageIndex, elem);
root.appendKid(elem);

PDMarkedContentReference mcr = new PDMarkedContentReference();
mcr.setMCID(pageIndex);
elem.appendKid(mcr);

COSDictionary mcDict = new COSDictionary();
mcDict.setInt(COSName.MCID, pageIndex);

pdPageContentStream.beginMarkedContent(COSName.ARTIFACT, PDPropertyList.create(mcDict));
pdPageContentStream.drawImage(pdImageXObject, a,b,c,d);
pdPageContentStream.endMarkedContent();
pdPageContentStream.close();

COSArray ar = new COSArray();
ar.add(elem);
parentTreeMap.put(pageIndex, ar);

root.setParentTreeNextKey(pageIndex + 1);
}
parentTree.setNumbers(parentTreeMap);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
doc.save(stream);
doc.close();
return stream;

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post