Package net.sf.jasperreports.pdf
Class JRPdfExporterTagHelper
- java.lang.Object
-
- net.sf.jasperreports.pdf.JRPdfExporterTagHelper
-
- All Implemented Interfaces:
StyledTextListWriter
public class JRPdfExporterTagHelper extends Object implements StyledTextListWriter
Provides support for tagged PDF documents. PDF files can contain hidden tags that describe the structure of the document. Some of the tags are used by the automated reader tool that reads PDF documents aloud to people with disabilities.Marking Headings
JasperReports currently supports specifying type 1, 2 and 3 level headings. In order to mark a text field as a level 1 heading, the following custom element property should be used in JRXML:<property name="net.sf.jasperreports.export.pdf.tag.h1" value="full"/>
Value full means that a full<H1>
tag will be embedded in the PDF wrapping the current text element. If two or more text fields make up a single level 1 heading, there are two ways to mark the heading:- In the first, the text elements making up the heading are placed inside a frame and
the frame is marked with the following custom property:
<property name="net.sf.jasperreports.export.pdf.tag.h1" value="full"/>
- In the second, the first element of the heading (respective to the Z-Order, or the
order in which the elements appear in JRXML) is tagged with:
<property name="net.sf.jasperreports.export.pdf.tag.h1" value="start"/>
and the last element from the heading (respective to the same order) is marked with
<property name="net.sf.jasperreports.export.pdf.tag.h1" value="end"/>
net.sf.jasperreports.export.pdf.tag.h2
andnet.sf.jasperreports.export.pdf.tag.h3
.Marking Tables
Tables are comprised of column headers, row headers, and a data section. Each table section is made of cells. Marking table structures in PDF is similar to the way tables are described in HTML and uses the same techniques as those for marking headings. When marking a table, the user has to indicate in the report template where the table starts and where it ends. If the entire table is placed in a container, such as a frame element, marking the table requires only marking the parent frame with the following custom element property:<property name="net.sf.jasperreports.export.pdf.tag.table" value="full"/>
However, most of the time, tables cannot be isolated in a frame unless they are subreports, because they generally span multiple report sections and bands. In such cases, marking a table requires marking in JRXML the first and last element making up the table structure. The first element of the table (probably the first element in the table header) should be marked with the following custom property:<property name="net.sf.jasperreports.export.pdf.tag.table" value="start"/>
The last element of the table should be marked with:<property name="net.sf.jasperreports.export.pdf.tag.table" value="end"/>
Tables are made of rows, and each row has to be precisely delimited within the table structure. This includes the column header rows at the top of the table. Similar to the headings and table marking, a table row can be identified in two ways:- If the entire content that makes up the row is isolated within a frame, the frame can be
marked with the following custom property:
<property name="net.sf.jasperreports.export.pdf.tag.tr" value="full"/>
- If the content of the row is not grouped in a container frame, its first and last elements
(respective to the Z-order or the order in which they appear in JRXML) have to be
marked with the following custom properties:
<property name="net.sf.jasperreports.export.pdf.tag.tr" value="start"/>
for the first element and
<property name="net.sf.jasperreports.export.pdf.tag.tr" value="start"/>
for the last element.
<property name="net.sf.jasperreports.export.pdf.tag.th" value="full"/>
A header cell made of multiple elements is marked with<property name="net.sf.jasperreports.export.pdf.tag.th" value="start"/>
on its first element and<property name="net.sf.jasperreports.export.pdf.tag.th" value="end"/>
on its last element. Normal data cells made of a single element (that can be frame) are marked with<property name="net.sf.jasperreports.export.pdf.tag.td" value="full"/>
Normal data cells made of multiple elements are marked with<property name="net.sf.jasperreports.export.pdf.tag.td" value="start"/>
on their first element and<property name="net.sf.jasperreports.export.pdf.tag.td" value="end"/>
on their last element. Just as in HTML tables, cells can span multiple rows and/or columns. Column span and row span values for the current table cell can be specified using the following custom properties on the same element where the cell start was marked (the element with the full or start property marking the cell):<property name="net.sf.jasperreports.export.pdf.tag.colspan" value="<number>"/>
<property name="net.sf.jasperreports.export.pdf.tag.rowspan" value="<number>"/>
PDF Content Reading Order
JasperReports uses the Z-order of the elements as present in the report template (JRXML) to control reading order in the resulting PDF files. This is usually the intended way for the documents to be read, so no specific modifications were required in order to achieve it.- Author:
- Teodor Danciu (teodord@users.sourceforge.net)
-
-
Field Summary
-
Constructor Summary
Constructors Modifier Constructor Description protected
JRPdfExporterTagHelper(JRPdfExporter exporter)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
createEndHeadingTags(JRPrintElement element, String pdfTagProp, AccessibilityTagEnum accessibilityTag)
protected void
createEndTag(JRPrintElement element, String pdfTagProp)
protected void
createEndTags(JRPrintElement element)
protected void
createListStartTag()
protected void
createSpanTags(JRPrintElement element, PdfStructureEntry parentTag)
protected void
createStartHeadingTags(JRPrintElement element, String pdfTagProp, AccessibilityTagEnum accessibilityTag)
protected void
createStartTag(JRPrintElement element, String pdfTag)
protected void
createStartTags(JRPrintElement element)
protected void
createTableStartTag()
protected void
createTdStartTag(JRPrintElement element)
protected void
createThStartTag(JRPrintElement element)
protected void
createTrStartTag()
protected void
endElement(JRPrintElement element)
protected void
endImage()
void
endLi()
void
endOl()
protected void
endPage()
protected void
endPageAnchor()
protected void
endText()
void
endUl()
protected StyledTextListWriter
getListWriter()
protected void
init()
protected void
setLanguage(String language)
protected void
setPdfProducer(PdfProducer pdfProducer)
protected void
setTagged(boolean isTagged)
protected void
startElement(JRPrintElement element)
protected void
startImage(JRPrintImage printImage)
void
startLi(boolean noBullet)
void
startOl(String type, int cutStart)
protected void
startPage()
protected void
startPageAnchor()
protected void
startText(boolean isHyperlink)
protected void
startText(String text, boolean isHyperlink)
void
startUl()
-
-
-
Field Detail
-
PROPERTY_TAG_L
public static final String PROPERTY_TAG_L
- See Also:
- Constant Field Values
-
PROPERTY_TAG_LI
public static final String PROPERTY_TAG_LI
- See Also:
- Constant Field Values
-
PROPERTY_TAG_LBL
public static final String PROPERTY_TAG_LBL
- See Also:
- Constant Field Values
-
PROPERTY_TAG_LBODY
public static final String PROPERTY_TAG_LBODY
- See Also:
- Constant Field Values
-
PROPERTY_TAG_REFERENCE
public static final String PROPERTY_TAG_REFERENCE
- See Also:
- Constant Field Values
-
PROPERTY_TAG_NOTE
public static final String PROPERTY_TAG_NOTE
- See Also:
- Constant Field Values
-
PROPERTY_TAG_H1
public static final String PROPERTY_TAG_H1
Deprecated.Replaced byAccessibilityUtil.PROPERTY_ACCESSIBILITY_TAG
andAccessibilityTagEnum.H1
.- See Also:
- Constant Field Values
-
PROPERTY_TAG_H2
public static final String PROPERTY_TAG_H2
Deprecated.Replaced byAccessibilityUtil.PROPERTY_ACCESSIBILITY_TAG
andAccessibilityTagEnum.H2
.- See Also:
- Constant Field Values
-
PROPERTY_TAG_H3
public static final String PROPERTY_TAG_H3
Deprecated.Replaced byAccessibilityUtil.PROPERTY_ACCESSIBILITY_TAG
andAccessibilityTagEnum.H3
.- See Also:
- Constant Field Values
-
PROPERTY_TAG_H4
public static final String PROPERTY_TAG_H4
Deprecated.Replaced byAccessibilityUtil.PROPERTY_ACCESSIBILITY_TAG
andAccessibilityTagEnum.H4
.- See Also:
- Constant Field Values
-
PROPERTY_TAG_H5
public static final String PROPERTY_TAG_H5
Deprecated.Replaced byAccessibilityUtil.PROPERTY_ACCESSIBILITY_TAG
andAccessibilityTagEnum.H5
.- See Also:
- Constant Field Values
-
PROPERTY_TAG_H6
public static final String PROPERTY_TAG_H6
Deprecated.Replaced byAccessibilityUtil.PROPERTY_ACCESSIBILITY_TAG
andAccessibilityTagEnum.H6
.- See Also:
- Constant Field Values
-
exporter
protected JRPdfExporter exporter
-
pdfProducer
protected PdfProducer pdfProducer
-
pdfStructure
protected PdfStructure pdfStructure
-
allTag
protected PdfStructureEntry allTag
-
tagStack
protected Stack<PdfStructureEntry> tagStack
-
isTagEmpty
protected boolean isTagEmpty
-
crtCrosstabRowY
protected int crtCrosstabRowY
-
insideCrosstabCellFrame
protected boolean insideCrosstabCellFrame
-
isDataCellPrinted
protected boolean isDataCellPrinted
-
isTagged
protected boolean isTagged
-
language
protected String language
-
-
Constructor Detail
-
JRPdfExporterTagHelper
protected JRPdfExporterTagHelper(JRPdfExporter exporter)
-
-
Method Detail
-
setTagged
protected void setTagged(boolean isTagged)
-
setLanguage
protected void setLanguage(String language)
-
setPdfProducer
protected void setPdfProducer(PdfProducer pdfProducer)
-
init
protected void init()
-
startPageAnchor
protected void startPageAnchor()
-
endPageAnchor
protected void endPageAnchor()
-
startPage
protected void startPage()
-
endPage
protected void endPage()
-
startElement
protected void startElement(JRPrintElement element)
-
endElement
protected void endElement(JRPrintElement element)
-
startImage
protected void startImage(JRPrintImage printImage)
-
endImage
protected void endImage()
-
startText
protected void startText(boolean isHyperlink)
-
startText
protected void startText(String text, boolean isHyperlink)
-
endText
protected void endText()
-
createStartTags
protected void createStartTags(JRPrintElement element)
-
createStartHeadingTags
protected void createStartHeadingTags(JRPrintElement element, String pdfTagProp, AccessibilityTagEnum accessibilityTag)
-
createTableStartTag
protected void createTableStartTag()
-
createTrStartTag
protected void createTrStartTag()
-
createThStartTag
protected void createThStartTag(JRPrintElement element)
-
createTdStartTag
protected void createTdStartTag(JRPrintElement element)
-
createSpanTags
protected void createSpanTags(JRPrintElement element, PdfStructureEntry parentTag)
-
createListStartTag
protected void createListStartTag()
-
createStartTag
protected void createStartTag(JRPrintElement element, String pdfTag)
-
createEndTags
protected void createEndTags(JRPrintElement element)
-
createEndHeadingTags
protected void createEndHeadingTags(JRPrintElement element, String pdfTagProp, AccessibilityTagEnum accessibilityTag)
-
createEndTag
protected void createEndTag(JRPrintElement element, String pdfTagProp)
-
startUl
public void startUl()
- Specified by:
startUl
in interfaceStyledTextListWriter
-
endUl
public void endUl()
- Specified by:
endUl
in interfaceStyledTextListWriter
-
startOl
public void startOl(String type, int cutStart)
- Specified by:
startOl
in interfaceStyledTextListWriter
-
endOl
public void endOl()
- Specified by:
endOl
in interfaceStyledTextListWriter
-
startLi
public void startLi(boolean noBullet)
- Specified by:
startLi
in interfaceStyledTextListWriter
-
endLi
public void endLi()
- Specified by:
endLi
in interfaceStyledTextListWriter
-
getListWriter
protected StyledTextListWriter getListWriter()
-
-