free pdf viewer c# : Copy text from pdf with formatting application control utility azure html asp.net visual studio JasperReports-Ultimate-Guide-316-part1344

T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
The great majority of available Java libraries that produce charts and graphics can output 
to image files or in-memory Java image objects. This is why it shouldn’t be hard to put a 
chart or a graphic generated by one of those libraries into a JasperReports document 
using a normal image element, as described in the previous “Images” section of this 
chapter.
You can see this working in the 
jfreechart and
jcharts
samples, which are found in 
the 
/demo/samples
directory of the project.
To simplify the integration of charts inside reports, a specialized 
<chart>
element was 
added to JasperReports. Built-in support for charts is explained in “Charts” on page 173.
B
OX
E
LEMENTS
Text elements, images, and charts are considered “box elements” because you can 
surround them by a border that’s customizable on each side. When defining the border 
around such a box element, the user can control the width, style, and color of each of the 
four sides of the element, as well as the padding (the amount of blank space to reserve 
between the border of the element and its actual content). Listing 10-13 gives the 
JRXML syntax for box elements:
<!ELEMENT box EMPTY>
<!ATTLIST box
border (None | Thin | 1Point | 2Point | 4Point | Dotted) 
#IMPLIED
borderColor CDATA #IMPLIED
padding NMTOKEN #IMPLIED
topBorder (None | Thin | 1Point | 2Point | 4Point | Dotted) 
#IMPLIED
topBorderColor CDATA #IMPLIED
topPadding NMTOKEN #IMPLIED
leftBorder (None | Thin | 1Point | 2Point | 4Point | Dotted) 
#IMPLIED
leftBorderColor CDATA #IMPLIED
leftPadding NMTOKEN #IMPLIED
bottomBorder (None | Thin | 1Point | 2Point | 4Point | Dotted) 
#IMPLIED
bottomBorderColor CDATA #IMPLIED
bottomPadding NMTOKEN #IMPLIED
rightBorder (None | Thin | 1Point | 2Point | 4Point | Dotted) 
#IMPLIED
rightBorderColor CDATA #IMPLIED
rightPadding NMTOKEN #IMPLIED
>
Listing 10-13. JRXML Syntax
P
AGE
149
Copy text from pdf with formatting - extract text content from PDF file in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Feel Free to Extract Text from PDF Page, Page Region or the Whole PDF File
can't copy and paste text from pdf; extract text from pdf file
Copy text from pdf with formatting - VB.NET PDF Text Extract Library: extract text content from PDF file in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
How to Extract Text from PDF with VB.NET Sample Codes in .NET Application
copy text from protected pdf to word; c# get text from pdf
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
B
ORDER
S
TYLE
If the border has the same style on all four sides of the element, then the 
border
attribute 
should be used. This can be set to one of six possible values, which are the same as the 
ones used for the 
pen
attribute available for graphic elements:
 No border: The graphic element will not display a border (
border="None"
).
 Thin border: The border around the graphic element will be half a point thick 
(
border="Thin"
).
 One-point-thick border: The element will have a normal, one-point-thick border 
(
pen="1Point"
).
 Two-point-thick border: The element will have a thicker border (
pen="2Point"
).
 Four-point-thick border: The element will have a very thick border 
(
pen="4Point"
).
 Dotted border: The border will be one point thick and made of dots (
border 
="Dotted"
).
The attributes for specifying the border style for each side of the box are 
topBorder
leftBorder
bottomBorder
, and 
rightBorder
. These can be used for overriding the 
border style specified by the border attribute mentioned previously.
B
ORDER
C
OLOR
If the border color is the same for all four sides of the box, the 
borderColor
attribute 
can be used. If the border color must be overridden for a specific box side, then one or 
more of the following attributes can be set: 
topBorderColor
leftBorderColor
bottomBorderColor
and 
rightBorderColor
.
B
OX
P
ADDING
The amount of space to be left blank as margins within the bounds of a box element can 
be controlled using either the 
padding
attribute (providing the same amount of padding 
on all four sides) or the individual attributes for each side: 
topPadding
leftPadding
bottomPadding
, and 
rightPadding
.
H
YPERLINKS
, A
NCHORS
AND
B
OOKMARKS
JasperReports allows you to create drill-down reports, which introduce tables of contents 
in your documents or redirect viewers to external documents using special report 
elements called hyperlinks.
When the user clicks a hyperlink, he or she is redirected to a local destination within the 
current document or to an external resource. Hyperlinks are not the only actors in this 
P
AGE
150
C# PDF Convert to Text SDK: Convert PDF to txt files in C#.net
other C# .NET PDF to text conversion controls, RasterEdge C# PDF to text converter control toolkit can convert PDF document to text file with good formatting.
extract text from pdf using c#; extract all text from pdf
VB.NET Create PDF from Excel Library to convert xlsx, xls to PDF
pages edit, C#.NET PDF pages extract, copy, paste, C# NET rotate PDF pages, C#.NET search text in PDF all Excel spreadsheet into high quality PDF without losing
extract text from pdf; copying text from pdf into word
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
viewer-redirecting scenario. You also need a way to specify the possible hyperlink 
destinations in a document. These local destinations are called anchors.
There are no special report elements that introduce hyperlinks or anchors in a report 
template, but rather special settings that make a usual report element a hyperlink and/or 
an anchor. 
In JasperReports, only text field, image, and chart elements can be hyperlinks or anchors. 
This is because all these types of elements offer special settings that allow you to specify 
the hyperlink reference to which the hyperlink will point to or the name of the local 
anchor. Note that a particular text field or image can be both anchor and hyperlink at the 
same time.
Listing 10-14 gives the JRXML syntax for hyperlinks, anchors, and bookmarks.
Listing 10-14. JRXML Syntax
<!ELEMENT anchorNameExpression (#PCDATA)>
<!ELEMENT hyperlinkReferenceExpression (#PCDATA)>
<!ELEMENT hyperlinkAnchorExpression (#PCDATA)>
<!ELEMENT hyperlinkPageExpression (#PCDATA)>
<!ELEMENT hyperlinkTooltipExpression (#PCDATA)>
<!ELEMENT hyperlinkParameter (hyperlinkParameterExpression)>
<!ATTLIST hyperlinkParameter
name CDATA #REQUIRED
>
<!ELEMENT hyperlinkParameterExpression (#PCDATA)>
<!ATTLIST hyperlinkParameterExpression
class CDATA "java.lang.String"
>
Standard Hyperlinks
There are five standard types of hyperlinks supported by JasperReports by default. These 
are described in the following subsections.
Hyperlink Type
In Listings 10-7 and 10-12, in which the JRXML syntax for text field elements and 
image elements were respectively given, an attribute called 
hyperlinkType
was 
mentioned. This attribute can hold any text value, but by default, the engine recognizes 
the following standard hyperlink types:
P
AGE
151
C# PDF Convert to HTML SDK: Convert PDF to html files in C#.net
file. Besides, the converted HTML webpage will have original formatting and interrelation of text and graphical elements of the PDF.
copy paste pdf text; extract highlighted text from pdf
VB.NET PDF Convert to Word SDK: Convert PDF to Word library in vb.
application. In addition, texts, pictures and font formatting of source PDF file are accurately retained in converted Word document file.
extract text from image pdf file; get text from pdf into excel
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
 No hyperlink: By default, neither the text fields nor the images represent 
hyperlinks, even if the special hyperlink expressions are present 
(
hyperlinkType="None"
).
 External reference: The current hyperlink points to an external resource specified 
by the corresponding 
<hyperlinkReferenceExpression>
element, usually a 
URL (
hyperlinkType="Reference"
).
 Local anchor: The current hyperlink points to a local anchor specified by the 
corresponding 
<hyperlinkAnchorExpression>
element 
(
hyperlinkType="LocalAnchor"
).
 Local page: The current hyperlink points to a one-based page index within the 
current document specified by the corresponding 
<hyperlinkPageExpression> 
element (
hyperlinkType="LocalPage"
).
 Remote anchor: The current hyperlink points to an anchor specified by the 
<hyperlinkAnchorExpression>
element within an external document indicated 
by the corresponding 
<hyperlinkReferenceExpression>
element 
(
hyperlinkType= "RemoteAnchor"
).
 Remote page: The current hyperlink points to a one-based page index specified by 
the 
<hyperlinkPageExpression>
element, within an external document 
indicated by the corresponding 
<hyperlinkReferenceExpression>
element 
(
hyperlinkType= "RemotePage"
).
Any 
hyperlinkType
value not in the preceding list is considered a custom hyperlink 
type. More details about those are given in the “Custom Hyperlinks” section, which 
follows.
Hyperlink Expressions
Depending on the standard hyperlink type specified, one or two of the following 
expressions are evaluated and used to build the reference to which the hyperlink element 
will point:
<hyperlinkReferenceExpression>
<hyperlinkAnchorExpression>
<hyperlinkPageExpression>
Note that the first two should always return 
java.lang.String
and the third should 
return 
java.lang.Integer
values.
A special sample is provided in the 
/demo/samples/hyperlink
directory of the 
projects, which shows how to use this type of report element.
P
AGE
152
C# Create PDF from Word Library to convert docx, doc to PDF in C#.
A convenient C#.NET control able to turn all Word text and image content into high quality PDF without losing formatting. Convert
find and replace text in pdf file; copy formatted text from pdf
C# Create PDF from PowerPoint Library to convert pptx, ppt to PDF
Excellent .NET control for turning all PowerPoint presentation into high quality PDF without losing formatting in C#.NET Class. Convert
get text from pdf image; extract text from pdf open source
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
Hyperlink Target
All hyperlink elements, like text fields, images, and charts, also expose an attribute 
called 
hyperlinkTarget
. Its purpose is to help customize the behavior of the specified 
link when it is clicked in the viewer.
Currently, there are only two possible values for this attribute:
 Self: The document to which the hyperlink points will be opened in the current 
viewer window (
hyperlinkTarget="Self"
).
 Blank: The document to which the hyperlink points will be opened in a new viewer 
window (
hyperlinkTarget="Blank"
).
 Parent: The document to which the hyperlink points will be opened in the parent 
frame (
hyperlinkTarget="Parent"
).
 Top: The document to which the hyperlink points will be opened in the top frame 
(
hyperlinkTarget="Top"
).
 Custom target/Parameter name/Frame name: When the target value is not one of 
the above-mentioned standard predefined target values, the target is either a custom 
target that has to be processed by a registered target producer (see 
Custom_Hyperlink_Target below), or it is the name of a hyperlink parameter that 
gives the actual target value, or, if neither of the above apply, it is the name of the 
frame in which the document will be opened (hyperlinkTarget="custom_target").
If the target is not specified, the default hyperlink target is 
Self
.
Custom Hyperlink Target
Sometimes, the hyperlink target is not known at report design time and has to be 
specified dynamically at runtime, depending on the environment where the report runs. 
In such cases, the value of the hyperlink target must be calculated based on some runtime 
parameters or values. Targets defined at runtime are called custom hyperlink targets, as 
opposed to the standard hyperlink targets.
Custom hyperlink targets are generated by hyperlink target producers, which are classes 
that implement the net.sf.jasperreports.engine.export.JRHyperlinkTargetProducer 
interface. Hyperlink target producers can be added to the JasperReports engine in a 
transparent way, by registering instances of the 
net.sf.jasperreports.engine.export.JRHyperlinkTargetProducerFactory 
class as extensions. For more details about how to register JasperReports extensions, see 
“Extensions Support” on page 280.
When the JasperReports engine encounters a custom target value specified in the target 
attribute of a hyperlink, it first interrogates all registered hyperlink target producer 
factories to obtain a target producer for this custom hyperlink. If no target producer is 
found, the engine looks for any hyperlink parameter having the same name as the 
specified custom target. If one is found, the engine takes its value as the true target to 
P
AGE
153
C# Create PDF from Excel Library to convert xlsx, xls to PDF in C#
Turn all Excel spreadsheet into high quality PDF without losing formatting. Evaluation library and components for PDF creation from Excel in C#.NET framework.
export text from pdf; a pdf text extractor
VB.NET Create PDF from PowerPoint Library to convert pptx, ppt to
Remove Image from PDF Page. Image: Copy, Paste, Cut PDF, VB.NET convert PDF to text, VB.NET all PowerPoint presentation into high quality PDF without losing
extract text from scanned pdf; c# extract pdf text
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
use. If no parameter is found, the custom target value is considered a frame name into 
which the hyperlink document must be opened.
Hyperlink ToolTips
The hyperlink element can have a ToolTip, which is controlled by the 
<hyperlinkTooltipExpression> tag. The type of the expression should be 
java.lang.String
. The ToolTip expression will be evaluated along with the hyperlink 
and the result will be saved in the generated document.
The built-in JasperReports viewer and the HTML exporter will honor the hyperlink 
ToolTip and display it while the user views the report.
C
USTOM
H
YPERLINKS
In addition to the standard hyperlink types, users can define hyperlinks having custom 
types. A custom-typed hyperlink can have arbitrary parameters and is meant to be 
processed by a hyperlink handler registered while exporting the report.
When a hyperlink is declared as having a type other than the built-in types, the hyperlink 
is considered of custom type and the user is expected to provide handlers to process the 
hyperlink when the report is exported.
Arbitrary hyperlink parameters can be added to a custom hyperlink using the 
<hyperlinkParameter>
tag. These parameters are made available to the custom 
hyperlink handler so that it can generate a final hyperlink depending on the parameter 
values.
Hyperlink parameter expressions are evaluated along with the hyperlink, and the results 
are kept in the generated hyperlink object as parameter values.
When exporting the report to other formats such as HTML or PDF, the user can set a 
factory of hyperlink handlers using the 
HYPERLINK_PRODUCER_FACTORY
export 
parameter. A factory is an implementation of 
net.sf.jasperreports.engine.export.JRHyperlinkProducerFactory
, which is 
responsible for creating a hyperlink handler for a custom hyperlink type. This hyperlink 
handler created by the factory is a 
net.sf.jasperreports.engine.export.JRHyperlinkProducer
instance, and it is 
used for generating a hyperlink reference in the export document by assembling 
hyperlink parameters and other information supplied at export time.
To handle custom hyperlinks in the built-in Swing viewer, you need to register a 
hyperlink listener by calling 
addHyperlinkListener(listener)
on the 
net.sf.jasperreports.view.JRViewer
component. The listener is an 
implementation of the 
net.sf.jasperreports.view.JRHyperlinkListener 
interface. When a report hyperlink gets clicked, the listener queries the hyperlink type 
and performs the desired actions.
P
AGE
154
VB.NET Create PDF from Word Library to convert docx, doc to PDF in
Image to PDF. Image: Remove Image from PDF Page. Image: Copy, Paste, Cut Export all Word text and image content into high quality PDF without losing
copy text from scanned pdf; extract pdf text to word
VB.NET Word: Extract Text from Microsoft Word Document in VB.NET
time and effort compared with traditional copy and paste VB.NET. Apart from extracting text from Word powerful & profession imaging controls, PDF document, tiff
extracting text from pdf; c# extract text from pdf
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
A
NCHORS
If present in a text field or image element declaration, the 
<anchorNameExpression> 
tag transforms that particular text field or image into a local anchor of the resulting 
document, to which hyperlinks can point. The anchor will bear the name returned after 
evaluation of the anchor name expression, which should always return 
java.lang.String
values.
B
OOKMARKS
Some of the document formats, such as PDF, have built-in support for tables of contents 
and bookmarks. To allow you to make use of this, JasperReports lets you transform 
anchors into document bookmarks. To be used as bookmarks, anchors should have an 
indentation level set. To do this, set a positive integer value for the 
bookmarkLevel 
attribute available for all hyperlink elements in JasperReports.
For more details about how to use hyperlink anchors as document bookmarks, see the 
supplied 
/demo/samples/datasource
sample, which contains a table of contents when 
exported to PDF format.
E
LEMENT
G
ROUPS
Report elements placed in any report section can be arranged in multiple nested groups. 
The only reason for grouping your elements is to customize the stretch behavior of the 
report elements, as explained at the beginning of this chapter.
One possible value of the 
stretchType
attribute, available for all report elements, is 
RelativeToTallestObject
. If you choose this option, the engine tries to identify the 
object from the same group as the current graphic element that has suffered the biggest 
amount of stretch. It will then adapt the height of the current report element to the height 
of this tallest element of the group.
However, for this to work, you must group your elements. To do this, use the 
<elementGroup>
and 
</elementGroup>
tags to mark the elements that are part of the 
same group.
Listing 10-15 gives the JRXML syntax for element groups.
Listing 10-15. JRXML Syntax
<!ELEMENT elementGroup (break | line | rectangle | ellipse | image 
| staticText
| textField | subreport | pieChart | pie3DChart | barChart | 
bar3DChart | xyBarChart
| stackedBarChart | stackedBar3DChart | lineChart | xyLineChart | 
areaChart 
P
AGE
155
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
| xyAreaChart | scatterChart | bubbleChart | timeSeriesChart | 
highLowChart 
| candlestickChart | meterChart | thermometerChart | multiAxisChart 
| stackedAreaChart | elementGroup | crosstab | frame)*>
Element groups can contain other nested element groups, and there is no limit on the 
number of the nested element groups.
Report sections are element groups themselves, so all report elements placed directly in a 
containing band are part of the same default element group, which is the band itself. As 
such, for these report elements, 
stretchType="RelativeToTallestObject"
and 
stretchType= "RelativeToBandHeight"
have the same effect.
Check the 
/demo/samples/stretch
sample to see how element grouping works.
F
RAMES
A frame is a report element that behaves like an element container. It is like a rectangle 
that can contain other report elements. Frames can be nested into one another to any 
depth.
Listing 10-16 gives the JRXML syntax for frames.
Listing 10-16. JRXML Syntax
<!ELEMENT frame (reportElement, box?, (break | line | rectangle | 
ellipse | image
| staticText | textField | subreport | pieChart | pie3DChart | 
barChart | bar3DChart
| xyBarChart | stackedBarChart | stackedBar3DChart| lineChart | 
xyLineChart 
| areaChart | xyAreaChart | scatterChart | bubbleChart | 
timeSeriesChart 
| highLowChart | candlestickChart | meterChart | thermometerChart 
| multiAxisChart | stackedAreaChart | elementGroup | crosstab | 
frame)*)>
P
AGE
156
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
Frames have a background and a border, and they stretch to accommodate their content. 
They are usually helpful when a common background and/or common border must be put 
around a group of elements. The coordinates (
x
and 
y
properties) and the 
positionType 
and 
stretchType
properties of an element placed inside a frame are all relative to the 
frame, instead of the parent band.
P
AGE
B
REAKS
AND
C
OLUMN
B
REAKS
A special break element was added to the list of elements that can be placed inside a 
band. This is used for introducing a page break or column break at a specified position 
within the band.
Listing 10-17 gives the JRXML syntax for page and column breaks.
Listing 10-17. JRXML Syntax
<!ELEMENT break (reportElement)>
<!ATTLIST break
type (Page | Column) "Page"
>
In many ways, this break element behaves like any other normal element placed in a band. 
For instance, it can be conditionally displayed using 
<printWhenExpression>
, and it can 
float within the band if 
positionType="Float"
is used. Other common element 
properties like colors and styles do not make any sense for this kind of element, because it 
behaves like an invisible horizontal line that crosses the whole parent band and indicates the 
y position where a page break or column break should occur when the band content is 
rendered during the report-filling process.
Whether a page break or a column break should be introduced is specified using the 
type 
attribute available for this element. By default, page breaks are created.
G
ENERIC
E
LEMENTS
Generic report elements are like special placeholders that are put in the report template at 
report design time, but are dealt with only at export time, when special content is 
generated for them by the exporter.
A good example of a generic element use case is someone wanting to embed Flash 
movies in reports exported to HTML format. JasperReports has built-in support for 
displaying text and images, but there is no built-in element for displaying Flash movies. 
This person would need to do the following to achieve it:
 A new HTML export handler is developed, bundled into a JAR and deployed in the 
application. The export handler would be registered with JasperReports for a 
P
AGE
157
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
specific generic element type.
 Optionally, a report custom component is implemented so that report designers 
would be able to use specialized syntax in JRXMLs. The component 
implementation would generate 
net.sf.jasperreports.engine.JRGenericPrintElement
at fill time.
 Report designers would include either generic report elements or report 
components (if implemented) in report templates.
 At fill time, generic print elements whose type would match the type for which the 
export handler was registered would be produced. Report expressions embedded in 
the design report element are evaluated and the result is included in the produced 
generic element as parameter values.
 When the report will get exported to HTML, the custom HTML export handler will 
output HTML snippets that embed Flash movies as part of the HTML output. 
Generic element parameter values would be used to parametrize the resulting Flash 
movie.
But generic elements can be placeholders for any kind of special content, not necessarily 
Flash content. The generic element handler implementation has the freedom to generate 
any kind of output that can be embedded in the exporter report.
Generic elements can be generated in filled reports either by a generic design element, or 
by custom report components (see “Advanced JasperReports” on page 275 for more 
details about custom components). Generic design elements can be used in simple 
scenarios in which developing a specialized custom component would not benefit the 
report design process. A generic design element consists of a generic element type, and a 
list of element parameters.
A sample generic element is shown in the 
/demo/samples/genericelement
sample 
that comes with the JasperReports project source files, where a special HTML snippet is 
embedded into a report to show content coming from a public website.
Listing 10-18 gives the JRXML syntax for page and column breaks.
Listing 10-18. JRXML Syntax
<element name="genericElement">
<complexType>
<sequence>
<element ref="jr:reportElement"/>
<element ref="jr:genericElementType"/>
<element ref="jr:genericElementParameter" minOccurs="0" 
maxOccurs="unbounded"/>
</sequence>
<attribute name="evaluationTime" use="optional" default="Now" 
type="jr:complexEvaluationTime"/>
<attribute name="evaluationGroup" type="string" 
use="optional"/>
P
AGE
158
Documents you may be interested
Documents you may be interested