free pdf viewer c# : Copy text from pdf to word with formatting control SDK system web page wpf asp.net console JasperReports-Ultimate-Guide-312-part1340

T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
B
ACKGROUND
This is a special section that is rendered on all pages and its content placed underneath 
all other report sections. Normal report sections are rendered one after the other, but the 
background section does not interfere with the other report sections and can be used to 
achieve watermark effects or to create the same background for all pages.
If the main report sections described here don’t meet your needs, you might consider 
introducing supplementary sections like group headers and group footers. 
The following section shows how to group data on the report.
N
O
D
ATA
This is another special section that is generated only once per report and, under certain 
conditions, its content will replace all the ordinary report's content. 
Sometimes when the report data source is empty, is very useful to generate an equivalent 
content, a notice, maybe, or an image, in order to replace all the empty zone. Especially 
in the case of subreports, more useful is to replace all the subreport's content with an 
equivalent one.
If the 
<noData>
section is defined in the report template, and if the data source is empty, 
then the 
<noData>
section will be the only one taken into account at fill time, and its 
content will produce the report output.
D
ATA
G
ROUPING
Groups represent a flexible way to organize data on a report. A report group is 
represented by sequence of consecutive records in the data source that have something in 
common, like the value of a certain report field.
A report group has three components:
 Group expression
 Group header section
 Group footer section
The value of the associated group expression is what makes group records stick together. 
This value is what they have in common. When the value of the group expression 
changes during the iteration through the data source at report-filling time, a group 
rupture occurs and the corresponding 
<groupFooter>
and 
<groupHeader>
sections are 
inserted in the resulting document.
You can have as many groups as you want on a report. The order of groups declared in a 
report template is important because groups contain each other. One group contains the 
following group, and so on. When a larger group encounters a rupture, all subsequent 
groups are reinitialized. 
P
AGE
109
Copy text from pdf to word 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
delete text from pdf file; extract text from pdf to word
Copy text from pdf to word 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
copying text from pdf to word; copy pdf text to word
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
Note
Data grouping works as expected only when the records in the data source are already ordered 
according to the group expressions used in the report. 
For example, if you want to group some products by the country and city of the manufacturer, the engine expects 
to find the records in the data source already ordered by country and city.
If they aren’t, you can expect to find records belonging to a specific country or city in different parts of the 
resulting document, because JasperReports does not sort the data before using it.
Listing 9-3 gives the JRXML syntax for a report group.
Listing 9-3. JRXML Syntax
<!ELEMENT group (groupExpression?, groupHeader?, groupFooter?)>
<!ATTLIST group
name CDATA #REQUIRED
isStartNewColumn (true | false) "false"
isStartNewPage (true | false) "false"
isResetPageNumber (true | false) "false"
isReprintHeaderOnEachPage (true | false) "false"
minHeightToStartNewPage NMTOKEN "0"
footerPosition (Normal | StackAtBottom | ForceAtBottom | 
CollateAtBottom) "Normal"
keepTogether (true | false) "false"
>
<!ELEMENT groupExpression (#PCDATA)>
<!ELEMENT groupHeader (band?)>
<!ELEMENT groupFooter (band?)>
G
ROUP
N
AME
The name unequivocally identifies the group and can be used in other JRXML attributes 
when you want to refer a particular report group. The name of a group is mandatory and 
obeys the same naming convention that we mentioned for the report parameters, fields, 
and report variables.
P
AGE
110
C# PDF Convert to Text SDK: Convert PDF to txt files in C#.net
file formats using Visual C# code, such as, PDF to HTML converter assembly, PDF to Word converter assembly C#.NET DLLs: Use PDF to Text Converter Control in
copy text from pdf to word; extract text from pdf c#
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.
copy text from pdf without formatting; a pdf text extractor
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
S
TARTING
A
N
EW
P
AGE
OR
C
OLUMN
W
HEN
A
G
ROUP
B
REAKS
Sometimes it is useful to introduce a page or column break when a new group starts, 
usually because that particular group is more important and should start on a page or 
column of its own. 
To instruct the engine to start a new page or column for a certain group instead of 
printing it on the remaining space at the bottom of the page or column, you must set 
either the 
isStartNewPage
or 
isStartNewColumn
attribute to 
true
.
These two attributes represent one of the most common ways to control page and column 
breaks in a report. The other one is by using the special break element, which is 
explained in the “Page Breaks and Column Breaks” section on page 157. In all other 
situations, the reporting engine introduces page breaks automatically if content overflows 
onto a new page or column during the report-filling process.
In some report templates, you may want to introduce page breaks on purpose when a 
report section is larger than one page. Using the break element would not help, as the 
report template, having a band larger than the page size, would not get past the report 
validation process. To do this, you would need to introduce special dummy groups, as 
explained in the FAQs section of the freely available documentation published on the 
JasperReports web site (
http://jasperforge.org/sf/projects/jasperreports
).
However, if you don’t want to consistently introduce page or column breaks for a 
particular group, but prefer to do that only if the remaining space at the bottom of the 
page or column is too small, use the 
minHeightToStartNewPage
attribute. This 
attribute specifies the minimum remaining vertical space that prevents the group from 
starting a new page of its own. It is measured in pixels.
R
ESETTING
P
AGE
N
UMBER
If required, report groups have the power to reset the built-in report variable that contains 
the current page number (variable 
PAGE_NUMBER
). To do this, set the 
isResetPageNumber
attribute to 
true
.
G
ROUP
H
EADER
This section marks the start of a new group in the resulting document. It is inserted in the 
document every time the value of the group expression changes during the iteration 
through the data source. The group header section is a multi-band section.
G
ROUP
F
OOTER
Every time a report group changes, the engine adds the corresponding group footer 
section before starting the new group or when the report ends. The group footer section 
is also a multi-band section.
P
AGE
111
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
copy text from pdf; copy text from encrypted pdf
VB.NET Create PDF from Word Library to convert docx, doc to PDF in
Insert 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 locked pdf; extract text from image pdf file
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
The rendering position of the group footer on the page, as well as its behavior in relation 
to the report sections that follow it, is controlled by the 
footerPosition
attribute, as 
follows:
 Normal position: The group footer section is rendered immediately after the 
previous section (
footerPosition="Normal"
).
 Stack at the bottom of the page The group footer section appears at the bottom of 
the current page. Remaining space on the page appears above it. The group footer 
section of the outer groups is pushed to the bottom of the current page, as well, in 
case the current group is a nested inner group. So both the current group footer and 
the outer group footers stack at the bottom of the current page 
(
footerPosition="StackAtBottom"
).
 Force at the bottom of the page: The group footer section is forced to render at the 
very bottom of the page and is followed only by the page footer section. All 
sections following this type of group footer are forced to render on the next page 
(
footerPosition="ForceAtBottom"
).
 Collate at the bottom of the page: The collate setting is a weak setting. If all outer 
group footers are configured to render at the bottom of the page, the group footer 
section will also appear at the bottom and any remaining white space will appear 
above it. However, if at least one outer group footer has normal rendering position 
and its positioning is not overridden by another inner group, the current group 
footer renders at the normal position. (
footerPosition="CollateAtBottom"
).
Without specifying a footer position for the group, the group footer is rendered in normal 
position.
Check the provided samples like 
jasper
datasource
or 
query
, placed inside the 
/demo/samples
directory of the project to see how report groups can be used.
P
REVENTING
G
ROUP
S
PLIT
Sometimes it is useful to keep the content of a group together and prevent it from 
spanning pages or columns. In such cases, it is often advisable to start the group on a 
new page or column and leave some unused space on the current page/column rather 
than having the group split in the middle.
This behavior can be controlled with the 
keepTogether 
flag available at group level.
When this flag is turned on, we prevent the group from splitting on its first break 
attempt. If a group is long, it will certainly need to break at some point. So, with a first 
break only, we avoid a split only when the group attempts to split for the first time, while 
subsequent breaks during the current group are allowed.
Note that this a purely visual feature of the engine, because it does not involve reverting 
any of the calculations made during the current group iteration . It is only about moving 
already-generated content to a new page, making it appear as if the group started there in 
the first place. Be advised that in cases where group-, page- or column-related 
P
AGE
112
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
copy and paste text from pdf; copy text from pdf with formatting
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 text from pdf to word with formatting; copying text from pdf to excel
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
information is displayed in the group, such as the current page number, their values 
might be wrong after they are moved.
M
ULTI
-
BAND
S
ECTIONS
As mentioned earlier in this chapter, the majority of report sections are made out of a 
single band. But some of the sections can contain several bands and are called multi-
band sections. The multi-band sections are the detail section, the group header section, 
and the group footer section. Being able to split section content across multiple bands 
with similar behavior gives greater flexibility in achieving certain layouts and document 
output.
P
AGE
113
C# Create PDF from Excel Library to convert xlsx, xls to PDF in C#
C#.NET PDF SDK- Create PDF from Word in Visual C#. Turn all Excel spreadsheet into high quality PDF without losing formatting.
extract text from pdf file using java; extract text from pdf file
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
extract text from pdf acrobat; extract text from pdf java
R
EPORT
E
LEMENTS
The reports you generate will be empty if you do not put some report elements in the 
report template. Report elements are displayable objects like static texts, text fields, 
images, lines, and rectangles that you put in your report template sections. Report 
elements come in two flavors:
 Text elements: Static texts and text fields that display dynamic content
 Graphic elements: Lines, rectangles, ellipses, images, and charts
The following sections provide details on these two element categories. For now, we are 
going to present in detail the element properties that both categories share.
R
EPORT
E
LEMENT
P
ROPERTIES
When you add a report element to one of your report sections, you must specify the 
relative position of this element in that particular section and its size, along with other 
general report element properties like color, transparency, stretch behavior, and so forth.
The properties that are common to all types of report elements are grouped in the 
<reportElement>
tag, which appears in the declaration of all report elements.
Listing 10-1 gives the JRXML syntax for the report element.
Listing 10-1. JRXML Syntax
<!ELEMENT reportElement (printWhenExpression?)>
<!ATTLIST reportElement
key CDATA #IMPLIED
style CDATA #IMPLIED
positionType (Float | FixRelativeToTop | FixRelativeToBottom) 
"FixRelativeToTop"
stretchType (NoStretch 
| RelativeToTallestObject | RelativeToBandHeight) 
"NoStretch"
isPrintRepeatedValues (true | false) "true"
mode (Opaque | Transparent) #IMPLIED
x NMTOKEN #REQUIRED
y NMTOKEN #REQUIRED
width NMTOKEN #REQUIRED
height NMTOKEN #REQUIRED
P
AGE
114
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
export text from pdf to excel; cut text pdf
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
copy and paste text from pdf to excel; extract text from pdf
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
isRemoveLineWhenBlank (true | false) "false"
isPrintInFirstWholeBand (true | false) "false"
isPrintWhenDetailOverflows (true | false) "false"
printWhenGroupChanges CDATA #IMPLIED
forecolor CDATA #IMPLIED
backcolor CDATA #IMPLIED
>
<!ELEMENT printWhenExpression (#PCDATA)>
E
LEMENT
K
EY
Unlike variables and parameters, report elements are not required to have a name, 
because normally you do not need to obtain any individual element inside a report 
template. However, in some cases it is useful to be able to locate an element to alter one 
of its properties before using the report template.
This could be the case in an application for which the color of some elements in the 
report template needs to change based on user input. To locate the report elements that 
need to have their colors altered, the caller program could use the 
getElementByKey(String)
method available at band level. A key value must be 
associated with the report element and it must be unique within the overall band for the 
lookup to work.
The 
key
attribute is used as an example in the provided 
/demo/samples/alterdesign 
sample.
S
TYLE
Any type of report element can reference a report style definition using the 
style 
attribute. By doing so, all the style properties declared by the style definition that are 
applicable to the current element will be inherited. Style properties specified at the report 
element level can be used to override the inherited values.
A
BSOLUTE
P
OSITION
The 
x
and 
y
attributes of any report element are mandatory and represent the x and y 
coordinates, measured in pixels, that mark the absolute position of the top-left corner of 
the specified element within its parent report section.
R
ELATIVE
P
OSITION
Some report elements, such as text fields, have special properties that allow them to 
stretch downward to acquire all the information they have to display. Their height is 
calculated at runtime and may affect the neighboring elements in the same report section, 
especially those placed immediately below them.
P
AGE
115
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
The 
positionType
attribute specifies the behavior that the report element will have if 
the layout of the report section in which it is been placed is stretched.
There are three possible values for the 
positionType
attribute:
 Floating position: The element floats in its parent section if it is pushed downward 
by other elements found above it. It tries to conserve the distance between it and 
the neighboring elements placed immediately above it (
positionType="Float"
).
 Fixed position relative to the top of the parent band: The current report element 
simply ignores what happens to the other section elements and tries to conserve the 
y offset measured from the top of its parent report section 
(
positionType="FixRelativeToTop"
).
 Fixed position relative to the bottom of the parent band: If the height of the parent 
report section is affected by elements that stretch, the current element tries to 
conserve the original distance between its bottom margin and the bottom of the 
band (
positionType="FixRelativeToBottom"
).
A report element called 
e2
will float when another report element 
e1
stretches only if 
these three conditions are met:
e2 has positionType="Float"
e1.y + e1.height <= e2.y
e1.width + e2.width > max(e1.x + e1.width, e2.x + e2.width) – 
min(e1.x, e2.x)
The second and third conditions together imply that the element 
e2
must be placed 
below the 
e1
. By default, all elements have a fixed position relative to the top of the 
band. To see how element stretching and element floating work together, check the 
provided 
/demo/samples/stretch
sample.
E
LEMENT
S
IZE
The 
width
and 
height
attributes are mandatory and represent the size of the report 
element measured in pixels. Other element stretching settings may instruct the reporting 
engine to ignore the specified element height. Even in this case, the attributes remain 
mandatory since even when the height is calculated dynamically, the element will not be 
smaller than the originally specified height. 
E
LEMENT
C
OLOR
Two attributes represent colors: 
forecolor
and 
backcolor
. The fore color is for the 
text of the text elements and the border of the graphic elements. The background color 
fills the background of the specified report element, if it is not transparent.
You can also use the decimal or hexadecimal representation for the desired color. The 
preferred way to specify colors in JRXML is using the hexadecimal representation, 
P
AGE
116
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
because it lets you control the level for each base color of the RGB system. For example, 
you can display a text field in red by setting its 
forecolor
attribute as follows: 
forecolor="#FF0000"
The equivalent using the decimal representation would be the following:
forecolor="16711680"
The default fore color is 
black
and the default background color is 
white
.
E
LEMENT
T
RANSPARENCY
Report elements can either be transparent or opaque, depending on the value you specify 
for the 
mode
attribute. The default value for this attribute depends on the type of the 
report element. Graphic elements like rectangles and lines are opaque by default, while 
images are transparent. Both static texts and text fields are transparent by default, and so 
are the subreport elements.
S
KIPPING
E
LEMENT
D
ISPLAY
The engine can decide at runtime if it really should display a report element if you use 
<printWhenExpression>
, which is available for all types of report elements.
If present, this report expression should return a 
java.lang.Boolean
object or 
null.
It 
is evaluated every time the section containing the current element is generated, in order 
to see whether this particular element should appear in the report or not. If the expression 
returns 
null
, it is equivalent to returning 
java.lang.Boolean.FALSE
. If the 
expression is missing, then the report element will get printed every time—that is, if 
other settings do not intervene, as you shall see shortly.
R
EPRINTING
E
LEMENTS
ON
S
ECTION
O
VERFLOWS
When generating a report section, the engine might be forced to start a new page or 
column because the remaining space at the bottom of the current page or column is not 
sufficient for all the section elements to fit in, probably because some elements have 
stretched. In such cases, you might want to reprint some of the already displayed 
elements on the new page or column to recreate the context in which the page/column 
break occurred.
To achieve this, set 
isPrintWhenDetailOverflows="true"
for all report elements 
you want to reappear on the next page or column.
S
UPPRESSING
R
EPEATING
V
ALUES
D
ISPLAY
First, let’s see what exactly a “repeating value” is. It very much depends on the type of 
the report element we are talking about. For text field elements, this is very intuitive. In 
Table 10-1, which contains names taken from an ordinary phone book, you can see that 
P
AGE
117
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
for some consecutive lines, the value of the 
Family Name
column repeats itself (dummy 
phone numbers are used).
Table 10-1. Sample Data with Repeating Values
Family Name
First Name
Phone
Johnson
Adam
256.12.35
Johnson
Christine
589.54.52
Johnson
Peter
546.85.95
Johnson
Richard
125.49.56
Smith
John
469.85.45
Smith
Laura
459.86.54
Smith
Denise
884.51.25
You might want to suppress the repeating 
Family Name
values and print something like 
that shown in Table 10-2.
Table 10-2. Sample Data with Suppressed Repeating Values
Family Name
First Name
Phone
Johnson
Adam
256.12.35
Christine
589.54.52
Peter
546.85.95
Richard
125.49.56
Smith
John
469.85.45
Laura
459.86.54
Denise
884.51.25
To do that, set the following for the text field that displays the family name:
isPrintRepeatedValues="false"
The static text elements behave in the same way. As you would expect, their value 
always repeats and in fact never changes until the end of the report. This is why we call 
them static texts. So, if you set 
isPrintRepeatedValues="false"
for one of your 
<staticText>
elements, it is displayed only once, the first time, at the beginning of the 
report, and never again.
Now, what about graphic elements? An image is considered to be repeating itself if its 
bytes are exactly the same from one occurrence to the next. This happens only if you 
P
AGE
118
Documents you may be interested
Documents you may be interested