free pdf viewer c# : Extract text from pdf to word application control utility azure html asp.net visual studio JasperReports-Ultimate-Guide-315-part1343

T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
>
S
TRETCH
B
EHAVIOR
In early versions of JasperReports, only graphic elements could adapt their height 
depending on the height of other related elements through element grouping. But now all 
elements have this capability, and the 
stretchType
attribute has been moved to the 
<reportElement>
tag. It is still present inside the 
<graphicElement>
tag for JRXML 
backward-compatibility reasons. Details about this attribute were given at the beginning 
of this chapter.
B
ORDER
S
TYLE
In the past, only graphic elements could have a border. Since the introduction of the 
“box” concept, text elements can also have border-independent settings on all four sides 
of the element’s rectangle area. Details about box elements are given in the “Box 
Elements” section, later in this chapter.
To specify the type of the border around a graphic element, use the 
pen
attribute. This 
attribute is also used for specifying the type of lines drawn using 
<line>
elements or for 
specifying the type of the contour for 
<ellipse>
elements. The color of the border 
comes from the 
forecolor
attribute presented when describing the 
<reportElement> 
tag, explained earlier in this chapter.
The possible types for a graphic element border are as follows:
  border: The graphic element will not display any border around it (
pen="None"
).
 Thin border: The border around the graphic element will be half a point thick 
(
pen="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 
(
pen="Dotted"
).
The default border around a graphic element depends on its type. Lines and rectangles 
have a one-point-thick border by default. Images, by default, do not display any border.
B
ACKGROUND
F
ILL
S
TYLE
The 
fill
attribute specifies the style of the background of the graphic elements. The 
only style currently supported is the solid fill style, which is also the default 
(
fill="Solid"
).
P
AGE
139
Extract text from pdf to word - 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
get text from pdf file c#; export highlighted text from pdf to word
Extract text from pdf to word - 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 pdf to word with formatting; extract text from pdf java
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
L
INES
When displaying a line element, JasperReports draws one of the two diagonals of the 
rectangle represented by the 
x
y
width
, and 
height
attributes specified for this 
element.
Listing 10-9 gives the JRXML syntax for line elements.
Listing 10-9. JRXML Syntax
<!ELEMENT line (reportElement, graphicElement?)>
<!ATTLIST line
direction (TopDown | BottomUp) "TopDown"
>
Line Direction
The 
direction
attribute determines which one of the two diagonals of the rectangle 
should be drawn:
direction="TopDown"
draws a diagonal line from the top-left corner of the 
rectangle to the bottom-right corner.
direction="BottomUp"
draws a diagonal line from the bottom-left corner to the 
upper-right corner.
The default direction for a line is top-down. 
You can draw vertical lines by specifying 
width="1"
and horizontal lines by setting 
height="1"
. For vertical lines, the direction is not important. 
R
ECTANGLES
Rectangle elements are the simplest report elements. They share almost all their settings 
with most other report elements.
Listing 10-10 gives the JRXML syntax for rectangle elements.
Listing 10-10. JRXML Syntax
<!ELEMENT rectangle (reportElement, graphicElement?)>
<!ATTLIST rectangle
radius NMTOKEN #IMPLIED
>
P
AGE
140
VB.NET Create PDF from Word Library to convert docx, doc to PDF in
PDF in C#, C# convert PDF to HTML, C# convert PDF to Word, C# extract text from PDF, C# convert PDF to Jpeg, C# compress PDF, C# print PDF, C# merge PDF files
c# read text from pdf; copy text from pdf to word
VB.NET PDF Convert to Word SDK: Convert PDF to Word library in vb.
VB.NET Tutorial for How to Convert PDF to Word (.docx) Document in VB.NET. using RasterEdge.XDoc.PDF; Convert PDF to Word Document in VB.NET Demo Code.
cut text from pdf document; get text from pdf c#
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
Round Rectangles
The 
radius
attribute specifies the radius for the arcs used to draw the corners of the 
rectangle. The default value is 
0
, meaning that the rectangle has normal, square corners.
E
LLIPSES
Ellipses are the most basic graphic elements. As such, there are no supplementary 
settings to declare an ellipse element besides those already mentioned in the sections for 
the 
<reportElement>
and 
<graphicElement>
tags.
Listing 10-11 gives the JRXML syntax for ellipses.
Listing 10-11. JRXML Syntax
<!ELEMENT ellipse (reportElement, graphicElement?)>
Note
For more detailed examples of lines, rectangles, and ellipses, check the /demo/samples/shapes 
sample.
I
MAGES
The most complex graphics on a report are the images. Just as for text field elements, 
their content is dynamically evaluated at runtime, using a report expression.
Listing 10-12 gives the JRXML syntax for images.
Listing 10-12. JRXML Syntax
<!ELEMENT image (reportElement, box?, graphicElement?, 
imageExpression?, 
anchorNameExpression?, hyperlinkReferenceExpression?, 
hyperlinkAnchorExpression?, 
hyperlinkPageExpression?, hyperlinkTooltipExpression?, 
hyperlinkParameter*)>
<!ATTLIST image
scaleImage (Clip | FillFrame | RetainShape) #IMPLIED
hAlign (Left | Center | Right) #IMPLIED
vAlign (Top | Middle | Bottom) #IMPLIED
isUsingCache (true | false) #IMPLIED
isLazy (true | false) "false"
onErrorType (Error | Blank | Icon) "Error"
evaluationTime (Now | Report | Page | Column | Group | Band | 
Auto) "Now"
evaluationGroup CDATA #IMPLIED
P
AGE
141
C# PDF Image Extract Library: Select, copy, paste PDF images in C#
Image: Extract Image from PDF. |. Home ›› XDoc.PDF ›› C# PDF: Extract PDF Image. How to C#: Extract Image from PDF Document.
copy text from protected pdf; copy text from scanned pdf to word
VB.NET PDF Image Extract Library: Select, copy, paste PDF images
Image: Extract Image from PDF. |. Home ›› XDoc.PDF ›› VB.NET PDF: Extract PDF Image. VB.NET PDF - Extract Image from PDF Document in VB.NET.
erase text from pdf; extract text from pdf with formatting
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
hyperlinkType CDATA "None"
hyperlinkTarget (Self | Blank) "Self"
bookmarkLevel NMTOKEN "0"
>
<!ELEMENT imageExpression (#PCDATA)>
<!ATTLIST imageExpression
class (java.lang.String | java.io.File | java.net.URL | 
java.io.InputStream 
| java.awt.Image | net.sf.jasperreports.engine.JRRenderable) 
"java.lang.String"
>
Scaling Images
Since images are loaded at runtime, there is no way to know their exact size when 
creating the report template. The dimensions of the image element specified at design 
time may differ from the actual image loaded at runtime. You must define how the image 
should adapt to the original image element dimensions specified in the report template. 
The 
scaleImage
attribute allows you to choose one of  three values (see Figure 10-1):
 Clipping the image: If the actual image is larger than the image element size, it will 
be cut off so that it keeps its original resolution, and only the region that fits the 
specified size will be displayed (
scaleImage="Clip"
).
 Forcing the image size: If the dimensions of the actual image do not fit those 
specified for the image element that displays it, the image is forced to obey them 
and stretch itself so that it fits in the designated output area. It will be deformed if 
necessary (
scaleImage="FillFrame"
).
 Keeping the image proportions: If the actual image does not fit into the image 
element, it can be adapted to those dimensions while keeping its original 
undeformed proportions (
scaleImage="RetainShape"
).
 Stretching the image keeping the width: The image can be stretched vertically to 
match the actual image height, while preserving the declared width of the image 
element (
scaleImage="RealHeight"
).
 Stretching the image adjusting the width: The image can be stretched vertically to 
match the actual image height, while adjusting the width of the image element to 
match the actual image width (
scaleImage="RealSize"
).
P
AGE
142
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
copying text from pdf to word; copy text from pdf reader
C# PDF Convert to Word SDK: Convert PDF to Word library in C#.net
key. Quick to remove watermark and save PDF text, image, table, hyperlink and bookmark to Word without losing format. Powerful components
cut and paste text from pdf document; copying text from pdf to excel
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
Figure 10-1. Example of the five possible scaleImage attribute values: RetainShape, Clip, 
FillFrame, RealHeight and RealSize (the green rectangle shows the size of the design image 
element)
P
AGE
143
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
Able to extract single or multiple pages from adobe The portable document format, known as PDF document, is a they are using different types of word processors
copy and paste pdf text; erase text from pdf file
C# PDF insert text Library: insert text into PDF content in C#.net
Text to PDF. C#.NET PDF SDK - Insert Text to PDF Document in C#.NET. Providing C# Demo Code for Adding and Inserting Text to PDF File Page with .NET PDF Library.
copy text from encrypted pdf; extract formatted text from pdf
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
Stretching Images
The last two options allow report designers to specify a minimum height for the image 
element in the report template and to rely on the fact that the image element will stretch 
at fill time to accommodate the actual size of the rendered picture.
Note that, as for stretchable text fields, only the image height can increase. This follows 
the JasperReports principle that design element widths are fixed, and that the report 
flows downwards while data is fed to it.
As mentioned above, there are two scale types that allow images to stretch: 
RealHeight 
and 
RealSize
. The difference between them is that the former always preserves the 
width of the image element, while the latter adjusts the width of the image when the 
actual image width is smaller than the design image width. Adjusting the image width is 
useful when a border needs to be drawn around the image; if the image width is not 
adjusted, then the border might get drawn according to the design image width and some 
empty space would be left between the image and the border.
In order for image stretching to work, the actual image size needs to be known at report 
fill time. For images that use image files as sources, the image size will always be 
known. For images that use other type of renderers, the image size is determined by 
calling the 
getDimension()
method on the image renderer object, which is an instance 
of a class that implements 
net.sf.jasperreports.engine.JRRenderable
. If the 
method returns a 
null
dimension, the actual image size will not be known and the image 
will not stretch, but will render inside the area given by the design image width and 
height.
Another inherent limitation is that images that have delayed evaluation will not be able 
to stretch. Stretching such images is not supported because the actual image size can only 
be know after the image has been positioned in the generated report and other elements 
have been placed beneath the image, and stretching the image at this point would disturb 
the layout of the generated report.
Stretching images will always preserve proportions and will never get deformed. Any 
scaling which performed to the image will be performed uniformly on the horizontal and 
vertical axes.
If the actual image width is larger than the design width of the image element, the image 
will be scaled down to fit the element width set at design time. In other words, the design 
image width acts as an upper limit of the width of the generated image.
When the engine stretches an image, if the actual image height is bigger than the vertical 
space left to the bottom of the page, the image will cause the band to overflow and the 
engine will render the image on the new report page or column. If the vertical space 
available here is still not enough to render the image at its actual size, the image will be 
scaled down to fit the available height.
Note that if the actual height of the image is smaller than the declared height of the 
image, the height of the generated image will not be decreased. The produced image will 
P
AGE
144
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
always be at least as tall as the design image element, its height can only be increased 
when the report is filled.
Image Alignment
If the scale type for the image is 
Clip
or 
RetainShape
and the actual image is smaller 
than its defined size in the report template or does not have the same proportions, the 
image might not occupy all the space allocated to it in the report template. In such cases, 
you can align the image inside its predefined report space using the 
hAlign
and 
vAlign 
attributes, which specify the alignment of the image on the horizontal axis (
Left
Center
Right
) and the vertical axis (
Top
Middle
Bottom
). By default, images are 
aligned at the top and to the left inside their specified bounds.
Caching Images
All image elements have dynamic content. There are no special elements to introduce 
static images on the reports as there are for static text elements. However, most of the 
time, the images on a report are in fact static and do not necessarily come from the data 
source or from parameters. Usually, they are loaded from files on disk and represent 
logos and other static resources.
To display the same image multiple times on a report (for example, a logo appearing on 
the page header), you do not need to load the image file each time. Instead, you can 
cache the image for better performance. When you set the 
isUsingCache
attribute to 
true
, the reporting engine will try to recognize previously loaded images using their 
specified source. For example, it will recognize an image if the image source is a file 
name that it has already loaded, or if it is the same URL.
This caching functionality is available for image elements whose expressions return 
objects of any type as the image source. The 
isUsingCache
flag is set to 
true
by 
default for images having 
java.lang.String
expressions and to 
false
for all other 
types. The key used for the cache is the value of the image source expression; key 
comparisons are performed using the standard equals method. As a corollary, for images 
having a 
java.io.InputStream
source with caching enabled, the input stream is read 
only once, and subsequently the image will be taken from the cache.
The 
isUsingCache
flag should not be set in cases when an image has a dynamic source 
(for example, the image is loaded from a binary database field for each row) because the 
images would accumulate in the cache and the report filling would rapidly fail due to an 
out-of-memory error. Obviously, the flag should also not be set when a single source is 
used to produce different images (for example, a URL that would return a different 
image each time it’s accessed).
P
AGE
145
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
Lazy Loading Images
The 
isLazy
Boolean attribute specifies whether the image should be loaded and 
processed during report filling or during exporting. This can be useful in cases in which 
the image is loaded from a URL and is not available at report-filling time, but will be 
available at report-export or display time. For instance, there might be a logo image that 
has to be loaded from a public web server to which the machine that fills the reports does 
not have access. However, if the reports will be rendered in HTML, the image can be 
loaded by the browser from the specified URL at report-display time. In such cases, the 
isLazy
flag should be set to 
true
(it is 
false
by default) and the image expression 
should be of type 
java.util.String
, even if the specified image location is actually a 
URL, a file, or a classpath resource. When lazy loading an image at fill time, the engine 
will no longer try to load the image from the specified 
String
location but only store 
that location inside the generated document. The exporter class is responsible for using 
that 
String
value to access the image at report-export time.
The 
/demo/samples/images
sample contains an image element that points to the 
JasperReports logo, which is lazy loaded from the project’s web site.
Missing Images Behavior
For various reasons, an image may be unavailable when the engine tries to load it either 
at report-filling or export time, especially if the image is loaded from some public URL. 
For this reason, you may want to customize the way the engine handles missing images 
during report generation. The 
onErrorType
attribute available for images allows that. It 
can take the following values:
 Error: An exception is thrown if the engine cannot load the image (
onErrorType= 
"Error"
).
 Blank: Any image-loading exception is ignored and nothing will appear in the 
generated document (
onErrorType="Blank"
).
 Icon: If the image does not load successfully, then the engine will put a small icon 
in the document to indicate that the actual image is missing 
(
onErrorType="Icon"
).
Evaluating Images
As with text fields, you can postpone evaluating the image expression, which by default 
is performed immediately. This will allow you to display somewhere in the document 
images that will be built or chosen later in the report-filling process, due to complex 
algorithms, for example.
The same attributes that we talked about in the “Text Fields” section, 
evaluationTime 
and 
evaluationGroup
, are available in the 
<image>
element. The 
evaluationTime 
attribute can take the following values: 
P
AGE
146
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
 Immediate evaluation: The image expression is evaluated when the current band is 
filled (
evaluationTime="Now"
).
 End-of-report evaluation: The image expression is evaluated when the end of the 
report is reached (
evaluationTime="Report"
).
 End-of-page evaluation: The image expression is evaluated when the end of the 
current page is reached (
evaluationTime="Page"
).
 End-of-column evaluation: The image expression is evaluated when the end of the 
current column is reached (
evaluationTime="Column"
).
 End-of-group evaluation: The image expression is evaluated when the group 
specified by the 
evaluationGroup
attribute changes 
(
evaluationTime="Group"
).
 Auto evaluation: Each variable participating in the image expression is evaluated at 
a time corresponding to its reset type. Fields are evaluated 
Now 
(
evaluationTime="Auto"
).
The default value for this attribute is 
Now
.
Image Expression
The value returned by the image expression is the source for the image to be displayed. 
The image expression is introduced by the 
<imageExpression>
element and can return 
values from only the limited range of classes listed following:
java.lang.String
java.io.File
java.net.URL
java.io.InputStream
java.awt.Image
net.sf.jasperreports.engine.JRRenderable
Note
When the image expression returns a java.lang.String value, the engine tries to see whether 
the value represents a URL from which to load the image. If it is not a valid URL representation, it tries to locate a 
file on disk and load the image from it, assuming that the value represents a file name. If no file is found, it finally 
assumes that the string value represents the location of a classpath resource and tries to load the image from 
there. An exception is thrown only if all these attempts fail.
If the image expression class is not specified using the class attribute, it is assumed to be 
java.lang.String
, by default.
The 
/demo/samples/images
sample provided with the project contains several 
examples of image elements.
P
AGE
147
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
Image Renderer
The content of an image element can come either directly from an image file like a JPG, 
GIF, PNG, or can be a Scalable Vector Graphics (SVG) file that is rendered using some 
business logic or a special graphics API like a charting or a barcode library. Either way, 
JasperReports treats images in a very transparent way because it relies on a special 
interface called 
net.sf.jasperreports.engine.JRRenderable
to offer a common 
way to render images. 
The 
JRRenderer
interface has a method called 
render(Graphics2D grx, 
Rectangle2D r)
, which gets called by the engine each time it needs to draw the image 
on a given device or graphic context. This approach provides the best quality for the 
SVG images when they must be drawn on unknown devices or zoomed into without 
losing sharpness.
Other methods specified in this interface can be used to obtain the native size of the 
actual image that the renderer wraps or the binary data for an image that must be stored 
in a separate file during export.
The library comes with a default implementation for the 
JRRenderable
interface that 
wraps images that come from files or binary image data in JPG, GIF, or PNG format. 
The 
net.sf.jasperreports.engine.JRImageRenderer
class is actually a container 
for this binary image data, which it uses to load a 
java.awt.Image
object from it, 
which it then draws on the supplied 
java.awt.Graphics2D
context when the engine 
requires it.
Image renderers are serializable because inside the generated document for each image is 
a renderer object kept as reference, which is serialized along with the whole 
JasperPrint
object.
When a 
JRImageRenderer
instance is serialized, so is the binary image data it contains. 
However, if the image element must be lazy loaded (see the 
isLazy
attribute), then the 
engine will not load the binary image data at report-filling time. Rather, it stores inside 
the renderer only the 
java.lang.String
location of the image. The actual image data 
is loaded only when needed for rendering at report-export or view time.
To simplify the implementation of SVG image renderers, JasperReports ships with an 
abstract rendered 
net.sf.jasperreports.engine.JRAbstractSvgRenderer
. This 
implementation contains the code to produce binary image data from the SVG graphic in 
JPG format. This is needed when the image must be stored in separate files on disk or 
delivered in binary format to a consumer (like a web browser).
C
HARTS
AND
G
RAPHICS
The JasperReports library does not produce charts and graphics itself. This is not one of 
its goals. However, it can easily integrate charts, barcodes, and graphics produced by 
other more specialized Java libraries.
P
AGE
148
Documents you may be interested
Documents you may be interested