free pdf viewer c# : Cut and paste pdf text software Library project winforms asp.net web page UWP JasperReports-Ultimate-Guide-314-part1342

T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
Additional PDF fonts can be installed on your system if you choose one of Acrobat 
Reader’s font packs. For example, by installing the Asian font pack from Adobe on your 
system, you could use font names like those in Table 10-3 for the 
pdfFontName 
attribute.
Language
PDF Font Name
Simplified Chinese
STSong-Light
Traditional Chinese
Mhei-Medium
MSung-Light
Japanese
HeiseiKakuGo-W5
HeiseiMin-W3
Korean
HYGoThic-Medium
HYSMyeongJo-Medium
Table 10-3. Acrobat Reader’s Asian Fonts Pack
For more details about how to work with fonts when generating PDF documents, check 
the iText library documentation.
PDF Encoding
When creating reports in different languages for export to PDF, make sure that you 
choose the appropriate character encoding type. For example, an encoding type widely 
used in Europe is 
Cp1252
, also known as 
LATIN1
. Examples of some other possible 
encoding types are shown in Table 10-4.
Character Set
Encoding
Latin 2: Eastern Europe
Cp1250
Cyrillic
Cp1251
Greek
Cp1253
Turkish
Cp1254
Windows Baltic
Cp1257
Simplified Chinese
UniGB-UCS2-H
UniGB-UCS2-V
Traditional Chinese
UniCNS-UCS2-H
UniCNS-UCS2-V
Japanese
UniJIS-UCS2-H
UniJIS-UCS2-V
UniJIS-UCS2-HW-H
UniJIS-UCS2-HW-V
Korean
UniKS-UCS2-H
UniKS-UCS2-V
Table 10-4. Encoding Short List
P
AGE
129
Cut and paste pdf text - 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; pdf text replace tool
Cut and paste pdf text - 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
get text from pdf online; acrobat remove text from pdf
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
You can find more details about how to work with fonts and character encoding when 
generating PDF documents in the iText library documentation.
Embedded PDF Fonts
To use a TTF file when exporting your reports to PDF format and make sure everybody 
will be able to view it without problems, make sure that at least one of the following 
conditions are met:
 The TTF font is installed on the user’s system.
 The font is embedded in the PDF document itself.
It’s not easy to comply with the first condition; therefore, it is advisable to meet the 
second condition. You can do that by setting the 
isPdfEmbedded
attribute to 
true
.
For further details about how to embed fonts in PDF documents, see the iText 
documentation. A very useful example is available in the 
/demo/samples/unicode 
sample provided with the project.
S
TATIC
T
EXTS
Static texts are text elements with fixed content, which does not change during the 
report-filling process. They are used mostly to introduce static text labels into the 
generated documents.
Listing 10-6 gives the JRXML syntax for static text elements:
<!ELEMENT staticText (reportElement, box?, textElement?, text?)>
<!ELEMENT text (#PCDATA)>
Listing 10-6. JRXML Syntax
As you can see from the preceding syntax, besides the general element properties and the 
text-specific properties that we’ve already explained, a static text definition has only the 
<text>
tag, which introduces the fixed text content of the static text element.
T
EXT
F
IELDS
Unlike static text elements, which do not change their text content, text fields have an 
associated expression that is evaluated with every iteration in the data source to obtain 
the text content to be displayed.
Listing 10-7 gives the JRXML syntax for text fields.
<!ELEMENT textField (reportElement, box?, textElement?, 
textFieldExpression?, 
anchorNameExpression?, hyperlinkReferenceExpression?, 
hyperlinkAnchorExpression?, 
P
AGE
130
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
C#.NET PDF Library - Copy and Paste PDF Pages in C#.NET. Easy to C#.NET Sample Code: Copy and Paste PDF Pages Using C#.NET. C# programming
extract text from pdf image; extract pdf text to excel
VB.NET PDF copy, paste image library: copy, paste, cut PDF images
VB.NET PDF - Copy, Paste, Cut PDF Image in VB.NET. Copy, paste and cut PDF image while preview without adobe reader component installed.
copy paste pdf text; copy pdf text to word document
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
hyperlinkPageExpression?, hyperlinkTooltipExpression?, 
hyperlinkParameter*)>
<!ATTLIST textField
isStretchWithOverflow (true | false) "false"
evaluationTime (Now | Report | Page | Column | Group | Band | 
Auto) "Now"
evaluationGroup CDATA #IMPLIED
pattern CDATA #IMPLIED
isBlankWhenNull (true | false) #IMPLIED
hyperlinkType CDATA "None"
hyperlinkTarget (Self | Blank) "Self"
bookmarkLevel NMTOKEN "0"
>
<!ELEMENT textFieldExpression (#PCDATA)>
<!ATTLIST textFieldExpression
class (java.lang.Boolean | java.lang.Byte | java.util.Date | 
java.sql.Timestamp 
| java.sql.Time | java.lang.Double | java.lang.Float | 
java.lang.Integer 
| java.lang.Long | java.lang.Short | java.math.BigDecimal | 
java.lang.Number
| java.lang.String) "java.lang.String"
>
Listing 10-7. JRXML Syntax
Variable-Height Text Fields
Because text fields have dynamic content, most of the time you can’t anticipate the exact 
amount of space to provide for them. If the space you reserve for your text fields is not 
sufficient, the text content is truncated so that it fits into the available area.
This scenario is not always acceptable, so you can let the reporting engine calculate the 
amount of space required to display the entire content of the text field at runtime, and 
automatically adjust the size of the report element.
To do this, set 
isStretchWithOverflow
to 
true
for the particular text field elements 
you are interested in. By doing this, you’ll ensure that if the specified height for the text 
field is not sufficient, it will automatically be increased (never decreased) in order to be 
able to display the entire text content.
When text fields are affected by this stretch mechanism, the entire report section to 
which they belong is also stretched.
P
AGE
131
VB.NET PDF Page Extract Library: copy, paste, cut PDF pages in vb.
Page: Extract, Copy, Paste PDF Pages. |. Home ›› XDoc.PDF ›› VB.NET PDF: Copy and Paste PDF Page. VB.NET DLLs: Extract, Copy and Paste PDF Page.
find and replace text in pdf file; delete text from pdf with acrobat
C# PDF copy, paste image Library: copy, paste, cut PDF images in
C#.NET PDF SDK - Copy, Paste, Cut PDF Image in C#.NET. C# Guide cutting. C#.NET Project DLLs: Copy, Paste, Cut Image in PDF Page. In
.net extract text from pdf; extract text from pdf to excel
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
Evaluating Text Fields
Normally, all report expressions are evaluated immediately, using the current values of 
all the parameters, fields, and variables at that particular moment. It is like making a 
photo of all data for every iteration in the data source during the report-filling process.
This means that at any particular time, you won’t have access to values that are going to 
be calculated later in the report-filling process. This makes perfect sense, since all the 
variables are calculated step by step and reach their final value only when the iteration 
arrives at the end of the data source range they cover.
For example, a report variable that calculates the sum of a field for each page will not 
contain the expected sum until the end of the page is reached. That’s because the sum is 
calculated step by step as the data source records are iterated through. At any particular 
time, the sum will only be partial, since not all the records of the specified range will 
have been processed.
As a consequence, you cannot display a sum on the page header, since this value will be 
known only when the end of the page is reached. At the beginning of the page, when 
generating the page header, the sum variable would contain zero, or its initial value. To 
address this problem, JasperReports provides a feature (the 
evaluationTime
attribute) 
that lets you decide the exact moment you want the text field expression to be evaluated, 
avoiding the default behavior in which the expression is evaluated immediately when the 
current report section is generated.
The 
evaluationTime
attribute can have one of the following values:
 Immediate evaluation: The text field expression is evaluated when the current band 
is filled (
evaluationTime="Now"
).
 End-of-report evaluation: The text field expression is evaluated when the end of the 
report is reached (
evaluationTime="Report"
).
 End-of-page evaluation: The text field expression is evaluated when the end of the 
current page is reached (
evaluationTime="Page"
).
 End-of-column evaluation: The text field expression is evaluated when the end of 
the current column is reached (
evaluationTime="Column"
).
 End-of-group evaluation: The text field expression is evaluated when the group 
specified by the 
evaluationGroup
attribute changes 
(
evaluationTime="Group"
).
 Auto evaluation: Each variable participating in the text field expression is evaluated 
at a time corresponding to its reset type. Fields are evaluated 
Now
. This evaluation 
type should be used for text field expressions that combine values evaluated at 
different times, like the percentage out of a total (
evaluationTime="Auto"
).
The default value for this attribute is 
Now
, as already mentioned. In the example 
presented previously, you could easily specify 
evaluationTime="Page"
for the text 
field placed in the page header section, so that it displays the value of the sum variable 
only when reaching the end of the current page.
P
AGE
132
C# PDF Convert to Images SDK: Convert PDF to png, gif images in C#
Selection for compressing to multiple image formats. Cut and paste any areas in PDF pages to images. Supports to resize images in conversion.
copy text from pdf; edit pdf replace text
C# PDF remove image library: remove, delete images from PDF in C#.
Text: Replace Text in PDF. Image: Insert Image to PDF. Image: Remove Image from PDF Page. Image: Copy, Paste, Cut Image in Page. Link: Edit URL. Bookmark: Edit
delete text from pdf file; .net extract text from pdf
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
Note
Text fields with delayed evaluation do not stretch to acquire all the expression’s content. This is 
because the text element height is calculated when the report section is generated, and even if the engine comes 
back later with the text content of the text field, the element height will not adapt, because this would ruin the 
already created layout.
Also, avoid using evaluation type Auto when other types suffice, as it can lead to performance loss.
Suppressing the Display of Null Values
If the text field expression returns 
null
, your text field will display the 
null
text in the 
generated document. A simple way to avoid this is to set the 
isBlankWhenNull
attribute 
to 
true
. By doing this, the text field will cease to display 
null
and will instead display 
an empty string. This way nothing will appear on your document if the text field value is 
null
.
Formatting Output
Of course, when dealing with numeric or date/time values, you can use the Java API to 
format the output of the text field expressions. But there is a more convenient way to do 
it: by using the pattern attribute available in the 
<textField>
element.
The engine instantiates the 
java.text.DecimalFormat
class if the text field 
expression returns subclasses of the 
java.lang.Number
class, or instantiates the 
java.text.SimpleDataFormat
if the text field expression returns 
java.util.Date
java.sql.Timestamp
or 
java.sql.Time
objects.
For numeric fields, the value you should supply to this attribute is the same as if you 
formatted the value using 
java.text.DecimalFormat
.
For date/time fields, the value of this attribute has to be one of the following:
 A style for the date part of the value and one for the time part, separated by a 
comma, or one style for both the date part and the time part. A style is one of 
Short
Medium
Long
Full
Default
(corresponding to 
java.text.DateFormat
styles), or 
Hide
. The formatter is constructed by calling 
one of the 
getDateTimeInstance()
getDateInstance()
, or 
getTimeInstance()
methods of 
java.text.DateFormat
(depending on one of 
the date/time parts being hidden) and supplying the date/time styles and report 
locale.
 A pattern that can be supplied to 
java.text.SimpleDateFormat
. Note that in 
this case the internationalization support is limited.
P
AGE
133
VB.NET PDF url edit library: insert, remove PDF links in vb.net
position, such as PDF text, image and PDF table. Delete or remove partial or all hyperlinks from PDF file in VB.NET class. Copy, cut and paste PDF link to
copy text from locked pdf; delete text from pdf online
How to C#: Basic SDK Concept of XDoc.PDF for .NET
PDF file(s), and add, create, insert, delete, re-order, copy, paste, cut, rotate, and save PDF page(s), etc. Class: PDFDocument. Class: PDFPage. Text Process.
extract text from pdf c#; copy paste text pdf
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
For more detail about the syntax of this pattern attribute, check the Java API 
documentation for the 
java.text.DecimalFormat
and 
java.text.SimpleDateFormat
classes.
Text Field Expression
We have already talked about the text field expression. It is introduced by the 
<textFieldExpression>
element and can return values from only the limited range of 
classes listed following:
java.lang.Boolean
java.lang.Byte
java.util.Date
java.sql.Timestamp
java.sql.Time
java.lang.Double
java.lang.Float
java.lang.Integer
java.lang.Long
java.lang.Short
java.math.BigDecimal
java.lang.Number
java.lang.String
If the text field expression class is not specified using the class attribute, it is assumed to 
be 
java.lang.String
by default.
S
TYLED
T
EXT
AND
M
ARKUP
T
EXT
Normally, all the text content in a text element has the style specified by the text element 
attributes (text fore color, text background color, font name, font size, etc.). But in some 
cases, users will want to highlight a few words inside a text element, usually by changing 
the text fore color, changing the font style using an underline, or by making it bold or 
italic. In such cases, the text content of that particular text element will no longer be pure 
text. It will be specially structured XML content that includes style information in the 
text itself, or some other form of markup language.
All text elements have an option attribute called 
markup 
which can be used to specified 
the type of markup language that will be used inside the text element, to format its 
content. This new attribute deprecates the former attribute called 
isStyledText
.
The following are the predefined values possible for the 
markup
attribute:
 No markup: The content of the text element is plain text (
markup="none"
).
 Styled text: The content of the text element is styled text, an proprietary XML type 
of markup text described below (
markup="styled"
).
 HTML: The content of the text element is Hyper Text Markup Language 
(
markup="html"
).
P
AGE
134
C# PDF Image Extract Library: Select, copy, paste PDF images in C#
PDF ›› C# PDF: Extract PDF Image. How to C#: Extract Image from PDF Document. Support PDF Image Extraction from a Page, a Region on a Page, and PDF Document.
can't copy text from pdf; copy text from pdf in preview
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
 RTF: The content of the text element is Rich Text Format (
markup="rtf"
).
The JasperReports proprietary markup language is called styled text and is an XML 
based format in which the style of any portion of text inside a text element can be 
changed by embedding that portion inside a 
<style>
tag or other simple HTML tag 
from the following list: 
<b>
<u>
<i>
<font>
<sup>
<sub>
<li>
, or 
<br>
. As 
already mentioned, for styled text elements, the content is considered XML, and the 
engine tries to parse it to extract the style information at runtime. If the parsing fails for 
any reason, including malformed XML tags, then the engine will simply render that 
content as pure text, not styled text.
The XML structure of styled text is very simple and consists only of embedded 
<style> 
tags and simple HTML tags. Those tags can be nested on an unlimited number of levels 
to override certain style settings for the embedded text.
The 
<style>
tag has various attributes for altering the color, font, or other style 
properties of the text. From the standard HTML 
<font>
tag, only the 
fontFace
color
and 
size
attributes are recognized by the JasperReports engine.
Following is the equivalent DTD structure for the XML content of a styled text element:
<!ELEMENT style (style*, b*, u*, i*, font*, sup*, sub*, li*, br*)*>
<!ATTLIST style
fontName CDATA #IMPLIED
size NMTOKEN #IMPLIED
isBold (true | false) #IMPLIED
isItalic (true | false) #IMPLIED
isUnderline (true | false) #IMPLIED
isStrikeThrough (true | false) #IMPLIED
pdfFontName CDATA #IMPLIED
pdfEncoding CDATA #IMPLIED
isPdfEmbedded (true | false) #IMPLIED
forecolor CDATA #IMPLIED
backcolor CDATA #IMPLIED
>
<!ATTLIST font
fontFace CDATA #IMPLIED
color CDATA #IMPLIED
size NMTOKEN #IMPLIED
>
All style attributes inside a 
<style>
or 
<font>
tag are optional because each individual 
style property is inherited from the overall text element or from the parent 
<style>
tag 
when nested 
<style>
tags are used. Special XML characters like 
&
<
>
"
, and 
must 
be XML-encoded when placed inside a text field.
P
AGE
135
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
To see how the markup and style text features work in JasperReports, check the 
/demo/samples/markup
sample and the 
/demo/samples/styledtext
sample 
provided with the project source files.
T
EXT
M
EASURING
AND
T
RUNCATION
As mentioned in the previous sections, when a the contents of a text element do not fit 
into the area given by the element width and height, the engine will either truncate the 
text contents or, in the case of a text field that is allowed to stretch, increase the height of 
the element to accommodate the contents. To do so, the JasperReports engine needs to 
measure the text and calculate how much of it fits in the element area, or how much the 
element needs to stretch in order to fit the entire text.
JasperReports does this, by default, by using standard Java AWT classes to layout and 
measure the text with its style information given by the text font and by other style 
attributes. This ensures that the result of the text layout calculation is exact according to 
the JasperReports principle of pixel perfectness.
However, this comes at a price – the AWT text layout calls contribute to the overall 
report fill performance. For this reason and possibly others, it might be desired in some 
cases to implement a different text measuring mechanism. JasperReports allows users to 
employ custom text measurer implementations by setting a value for the 
net.sf.jasperreports.text.measurer.factory
property.
The property can be set globally (in 
jasperreports.properties
or via the 
net.sf.jasperreports.engine.util.JRProperties.setProperty()
method), at 
report level or at element level (as an element property). The property value should be 
either the name of a class that implements the 
net.sf.jasperreports.engine.fill.JRTextMeasurerFactory
interface, or an 
alias defined for such a text measurer factory class. To define an alias, one needs to 
define a property having 
net.sf.jasperreports.text.measurer.factory.<alias>
as key and the factory 
class name as value. Take the following examples of text measurer factory properties:
# in jasperreports.properties
# set a custom default text measurer factory
net.sf.jasperreports.text.measurer.factory=com.jasperreports.MyText
MeasurerFactory
# define an alias for a different text measurer factory
net.sf.jasperreports.text.measurer.factory.fast=com.jasperreports.M
yFastTextMeasurerFactory
<!-- in a JRXML, use the fast text measurer for a static text -->
<staticText>
<reportElement ...>
<property name=”net.sf.jasperreports.text.measurer.factory” 
value=”fast”/>
</reportElement>
P
AGE
136
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
<text>...</text>
</staticText>
The default text measurer factory used by JasperReports is 
net.sf.jasperreports.engine.fill.TextMeasurerFactory
; the factory is also 
registered under an alias named 
default
.
Text Truncation
The built-in text measurer supports a series of text truncation customizations. As a 
reminder, text truncation occurs when a the contents of a static text element or of a text 
field that is not set as stretchable do not fit the area reserved for the element in the report 
template. Note that text truncation only refers to the truncation of the last line of a text 
element, and not to the word wrapping of a text element that spans across multiple lines.
The default behavior is to use the standard AWT line break logic (as returned by the 
java.text.BreakIterator.getLineInstance()
method) to determine where to 
truncate the text. This means that the last line of text will be truncated after the last word 
that fits on the line, or after the last character when the first word on the line does not 
entirely fit.
This behavior can be changed by forcing the text to always get truncated at the last 
character that fits the element area, and by appending one or more characters to the 
truncated text to notify a report reader that the text has been truncated.
To force the text to be wrapped at the last character, the 
net.sf.jasperreports.text.truncate.at.charr
property needs to be set to true 
globally, at report level or at text element level. The levels at which the property can be 
set are listed in a decreasing order of precedence, therefore an element level property 
overrides the report level property, which in its turn overrides the global property. The 
property can also be set to false at report or element level to override the true value of the 
property set at a higher level.
To append a suffix to the truncated text, one needs to set the desired suffix as the value 
of the 
net.sf.jasperreports.text.truncate.suffix
property globally, at report 
level or at element level. For instance, to use a Unicode horizontal ellipsis character 
(code point U+2026) as text truncation suffix, one would set the property globally or at 
report level as following:
# globally in jasperreports.properties
net.sf.jasperreports.text.truncate.suffix=\u2026
<!-- at report level -->
<jasperReport ..>
<property name=”net.sf.jasperreports.text.truncate.suffix” 
value=”&#x2026;”/>
...
</jasperReport>
P
AGE
137
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
Note that in the JRXML the ellipsis character was introduced via an XML numerical 
character entity. If the JRXML file uses a Unicode XML encoding, the Unicode 
character can also be directly written in the JRXML.
When using a truncation suffix, the truncate at character property is taken into 
consideration in order to determine where to append the truncation suffix. If the 
truncation at character property is set to 
false
, the suffix is appended after the last word 
that fits; if the property is set to 
true
, the suffix is appended after the last text character 
that fits.
When used for a text element that produces styled text, the truncation suffix is placed 
outside the styled text, that is, the truncation suffix will be displayed using the style 
defined at element level.
Text truncation is desirable when producing reports for that are displayed on a screen or 
printed on paper – in such scenarios the layout of the report is important. On the other 
hand, some JasperReports exporters, such as the Excel or CSV ones, produce output 
which in many cases is intended as data-centric. In such cases, it could be useful not to 
truncate any text generated by the report, even if some texts would not fit when rendered 
on a layout-sensitive media.
To inhibit the unconditional truncation of report texts, one would need to set the 
net.sf.jasperreports.print.keep.full.text
property to 
true
globally, at report 
level or at text element level. When the property is set to 
true
, the text is not truncated 
at fill and the generated report preserves the full text as produced by the text element. 
Visual report exporters (such as the exporters used for PDF, HTML, RTF, printing or the 
Java report viewer) would still truncate the rendered text, but the Excel and CSV data-
centric exporters would use the full text. Note that preserving the full text does not affect 
the size of the text element, therefore the Excel exporter would display the full text 
inside a cell that has the size of the truncated text.
G
RAPHIC
E
LEMENTS
Graphic elements are the second major category of report elements. This category 
includes lines, rectangles, and images. They all have some properties in common, which 
are grouped under the attributes of the 
<graphicElement>
tag.
Listing 10-8 gives the JRXML syntax for graphic elements.
Listing 10-8. JRXML Syntax
<!ELEMENT graphicElement EMPTY>
<!ATTLIST graphicElement
stretchType (NoStretch | RelativeToTallestObject | 
RelativeToBandHeight) #IMPLIED
pen (None | Thin | 1Point | 2Point | 4Point | Dotted) #IMPLIED
fill (Solid) #IMPLIED
P
AGE
138
Documents you may be interested
Documents you may be interested