IText7> How to add a content of PdfCanvas as PdfName.Figure for PDF/UA Accessibility
I would like to add an element in PdfCanvas, codes as below. Why I can't see the "Figure" in document tag?
PdfCanvas canvas = new PdfCanvas(pdf.addNewPage());
canvas.beginText();
canvas.setFontAndSize(font, 12);
canvas.showText("Test for Accessibility");
canvas.stroke();
PdfDictionary dict = new PdfDictionary();
dict.put(PdfName.Span, new PdfString("Eyes Wide Shut"));
canvas.beginMarkedContent(PdfName.Figure, dict);
canvas.newlineShowText("EWS");
canvas.endMarkedContent();
canvas.endText();
java itext7
add a comment |
I would like to add an element in PdfCanvas, codes as below. Why I can't see the "Figure" in document tag?
PdfCanvas canvas = new PdfCanvas(pdf.addNewPage());
canvas.beginText();
canvas.setFontAndSize(font, 12);
canvas.showText("Test for Accessibility");
canvas.stroke();
PdfDictionary dict = new PdfDictionary();
dict.put(PdfName.Span, new PdfString("Eyes Wide Shut"));
canvas.beginMarkedContent(PdfName.Figure, dict);
canvas.newlineShowText("EWS");
canvas.endMarkedContent();
canvas.endText();
java itext7
add a comment |
I would like to add an element in PdfCanvas, codes as below. Why I can't see the "Figure" in document tag?
PdfCanvas canvas = new PdfCanvas(pdf.addNewPage());
canvas.beginText();
canvas.setFontAndSize(font, 12);
canvas.showText("Test for Accessibility");
canvas.stroke();
PdfDictionary dict = new PdfDictionary();
dict.put(PdfName.Span, new PdfString("Eyes Wide Shut"));
canvas.beginMarkedContent(PdfName.Figure, dict);
canvas.newlineShowText("EWS");
canvas.endMarkedContent();
canvas.endText();
java itext7
I would like to add an element in PdfCanvas, codes as below. Why I can't see the "Figure" in document tag?
PdfCanvas canvas = new PdfCanvas(pdf.addNewPage());
canvas.beginText();
canvas.setFontAndSize(font, 12);
canvas.showText("Test for Accessibility");
canvas.stroke();
PdfDictionary dict = new PdfDictionary();
dict.put(PdfName.Span, new PdfString("Eyes Wide Shut"));
canvas.beginMarkedContent(PdfName.Figure, dict);
canvas.newlineShowText("EWS");
canvas.endMarkedContent();
canvas.endText();
java itext7
java itext7
edited Jan 1 at 12:09
Alexey Subach
4,71972143
4,71972143
asked Dec 28 '18 at 9:24
Ludy.liLudy.li
254
254
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
First of all your code is not complete so we don't even know if you call setTagged()
on a PdfDocument
instance (which is a must for tagging).
But the bigger problem is that beginMarkedContent
on its own does not add any connections from the content to the tag tree. The best way to add those connections is use TagTreePointer
(if you really want to use low-level PdfCanvas
API). You can manipulate tree structure with TagTreePointer
and add connections between tree and content with PdfCanvas#openTag
.
Also, you seem to be trying to add expansion text (Eyes Wide Shut
) with dict.put(PdfName.Span, new PdfString("Eyes Wide Shut"));
, but from the PDF syntax point of view this expression does not do anything useful. TagTreePointer
's API allows you to set expansion text easily as well.
All in all, the complete code would look like following:
PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFilePath));
pdfDocument.setTagged();
PdfPage firstPage = pdfDocument.addNewPage();
PdfCanvas canvas = new PdfCanvas(firstPage);
TagTreePointer tagPointer = new TagTreePointer(pdfDocument);
tagPointer.setPageForTagging(firstPage);
tagPointer.addTag(StandardRoles.P).addTag(StandardRoles.SPAN);
canvas.beginText()
.setFontAndSize(PdfFontFactory.createFont(), 12)
.openTag(tagPointer.getTagReference())
.showText("Test for Accessibility")
.closeTag()
.stroke();
tagPointer.moveToParent().addTag(StandardRoles.SPAN).getProperties().setExpansion("Eyes Wide Shut");
canvas.openTag(tagPointer.getTagReference())
.newlineShowText("EWS")
.closeTag()
.endText();
pdfDocument.close();
The resultant tag structure:
It works. Thank you!
– Ludy.li
2 days ago
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53956239%2fitext7-how-to-add-a-content-of-pdfcanvas-as-pdfname-figure-for-pdf-ua-accessibi%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
First of all your code is not complete so we don't even know if you call setTagged()
on a PdfDocument
instance (which is a must for tagging).
But the bigger problem is that beginMarkedContent
on its own does not add any connections from the content to the tag tree. The best way to add those connections is use TagTreePointer
(if you really want to use low-level PdfCanvas
API). You can manipulate tree structure with TagTreePointer
and add connections between tree and content with PdfCanvas#openTag
.
Also, you seem to be trying to add expansion text (Eyes Wide Shut
) with dict.put(PdfName.Span, new PdfString("Eyes Wide Shut"));
, but from the PDF syntax point of view this expression does not do anything useful. TagTreePointer
's API allows you to set expansion text easily as well.
All in all, the complete code would look like following:
PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFilePath));
pdfDocument.setTagged();
PdfPage firstPage = pdfDocument.addNewPage();
PdfCanvas canvas = new PdfCanvas(firstPage);
TagTreePointer tagPointer = new TagTreePointer(pdfDocument);
tagPointer.setPageForTagging(firstPage);
tagPointer.addTag(StandardRoles.P).addTag(StandardRoles.SPAN);
canvas.beginText()
.setFontAndSize(PdfFontFactory.createFont(), 12)
.openTag(tagPointer.getTagReference())
.showText("Test for Accessibility")
.closeTag()
.stroke();
tagPointer.moveToParent().addTag(StandardRoles.SPAN).getProperties().setExpansion("Eyes Wide Shut");
canvas.openTag(tagPointer.getTagReference())
.newlineShowText("EWS")
.closeTag()
.endText();
pdfDocument.close();
The resultant tag structure:
It works. Thank you!
– Ludy.li
2 days ago
add a comment |
First of all your code is not complete so we don't even know if you call setTagged()
on a PdfDocument
instance (which is a must for tagging).
But the bigger problem is that beginMarkedContent
on its own does not add any connections from the content to the tag tree. The best way to add those connections is use TagTreePointer
(if you really want to use low-level PdfCanvas
API). You can manipulate tree structure with TagTreePointer
and add connections between tree and content with PdfCanvas#openTag
.
Also, you seem to be trying to add expansion text (Eyes Wide Shut
) with dict.put(PdfName.Span, new PdfString("Eyes Wide Shut"));
, but from the PDF syntax point of view this expression does not do anything useful. TagTreePointer
's API allows you to set expansion text easily as well.
All in all, the complete code would look like following:
PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFilePath));
pdfDocument.setTagged();
PdfPage firstPage = pdfDocument.addNewPage();
PdfCanvas canvas = new PdfCanvas(firstPage);
TagTreePointer tagPointer = new TagTreePointer(pdfDocument);
tagPointer.setPageForTagging(firstPage);
tagPointer.addTag(StandardRoles.P).addTag(StandardRoles.SPAN);
canvas.beginText()
.setFontAndSize(PdfFontFactory.createFont(), 12)
.openTag(tagPointer.getTagReference())
.showText("Test for Accessibility")
.closeTag()
.stroke();
tagPointer.moveToParent().addTag(StandardRoles.SPAN).getProperties().setExpansion("Eyes Wide Shut");
canvas.openTag(tagPointer.getTagReference())
.newlineShowText("EWS")
.closeTag()
.endText();
pdfDocument.close();
The resultant tag structure:
It works. Thank you!
– Ludy.li
2 days ago
add a comment |
First of all your code is not complete so we don't even know if you call setTagged()
on a PdfDocument
instance (which is a must for tagging).
But the bigger problem is that beginMarkedContent
on its own does not add any connections from the content to the tag tree. The best way to add those connections is use TagTreePointer
(if you really want to use low-level PdfCanvas
API). You can manipulate tree structure with TagTreePointer
and add connections between tree and content with PdfCanvas#openTag
.
Also, you seem to be trying to add expansion text (Eyes Wide Shut
) with dict.put(PdfName.Span, new PdfString("Eyes Wide Shut"));
, but from the PDF syntax point of view this expression does not do anything useful. TagTreePointer
's API allows you to set expansion text easily as well.
All in all, the complete code would look like following:
PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFilePath));
pdfDocument.setTagged();
PdfPage firstPage = pdfDocument.addNewPage();
PdfCanvas canvas = new PdfCanvas(firstPage);
TagTreePointer tagPointer = new TagTreePointer(pdfDocument);
tagPointer.setPageForTagging(firstPage);
tagPointer.addTag(StandardRoles.P).addTag(StandardRoles.SPAN);
canvas.beginText()
.setFontAndSize(PdfFontFactory.createFont(), 12)
.openTag(tagPointer.getTagReference())
.showText("Test for Accessibility")
.closeTag()
.stroke();
tagPointer.moveToParent().addTag(StandardRoles.SPAN).getProperties().setExpansion("Eyes Wide Shut");
canvas.openTag(tagPointer.getTagReference())
.newlineShowText("EWS")
.closeTag()
.endText();
pdfDocument.close();
The resultant tag structure:
First of all your code is not complete so we don't even know if you call setTagged()
on a PdfDocument
instance (which is a must for tagging).
But the bigger problem is that beginMarkedContent
on its own does not add any connections from the content to the tag tree. The best way to add those connections is use TagTreePointer
(if you really want to use low-level PdfCanvas
API). You can manipulate tree structure with TagTreePointer
and add connections between tree and content with PdfCanvas#openTag
.
Also, you seem to be trying to add expansion text (Eyes Wide Shut
) with dict.put(PdfName.Span, new PdfString("Eyes Wide Shut"));
, but from the PDF syntax point of view this expression does not do anything useful. TagTreePointer
's API allows you to set expansion text easily as well.
All in all, the complete code would look like following:
PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFilePath));
pdfDocument.setTagged();
PdfPage firstPage = pdfDocument.addNewPage();
PdfCanvas canvas = new PdfCanvas(firstPage);
TagTreePointer tagPointer = new TagTreePointer(pdfDocument);
tagPointer.setPageForTagging(firstPage);
tagPointer.addTag(StandardRoles.P).addTag(StandardRoles.SPAN);
canvas.beginText()
.setFontAndSize(PdfFontFactory.createFont(), 12)
.openTag(tagPointer.getTagReference())
.showText("Test for Accessibility")
.closeTag()
.stroke();
tagPointer.moveToParent().addTag(StandardRoles.SPAN).getProperties().setExpansion("Eyes Wide Shut");
canvas.openTag(tagPointer.getTagReference())
.newlineShowText("EWS")
.closeTag()
.endText();
pdfDocument.close();
The resultant tag structure:
answered Jan 1 at 12:17
Alexey SubachAlexey Subach
4,71972143
4,71972143
It works. Thank you!
– Ludy.li
2 days ago
add a comment |
It works. Thank you!
– Ludy.li
2 days ago
It works. Thank you!
– Ludy.li
2 days ago
It works. Thank you!
– Ludy.li
2 days ago
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53956239%2fitext7-how-to-add-a-content-of-pdfcanvas-as-pdfname-figure-for-pdf-ua-accessibi%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown