free pdf viewer c# : Extract text from pdf java SDK application service wpf html asp.net dnn JasperReports-Ultimate-Guide-325-part1354

T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
E
LEMENT
O
RIGIN
F
ILTER
In case no filter instance is passed to the exporter using the 
JRExporterParameter.FILTER
exporter parameter, the exporter searches for some 
configuration properties with a given prefix, both at report level (exporter hints) and 
globally, in order to decide if a default exporter filter instance should be created on-the-
fly and used internally, when exporting the current document. 
If created, this default exporter filter will filter out content from the exported document 
based on element origin information. Elements present in JasperReports generated 
documents keep information about their origin. The origin of an element is defined by its 
parent section in the initial report template, and optionally the name of the group and/or 
subreport that the element originated from. 
Removing page headers and page footers from the document when exporting to XLS can 
be achieved by putting these custom properties in the report template: 
<property 
name="net.sf.jasperreports.export.xls
.exclude.origin.band.1" 
value="pageHeader"/>
<property 
name="net.sf.jasperreports.export.xls
.exclude.origin.band.2" 
value="pageFooter"/>
If you want to remove page headers and page footers, but keep the first page header in 
place (useful when all pages are exported to the same sheet, in a flow layout) the 
following properties have to be used in the report template: 
<property 
name="net.sf.jasperreports.export.xls
.exclude.origin.keep.first.band.1" 
value="pageHeader"/>
<property 
name="net.sf.jasperreports.export.xls
.exclude.origin.band.2" 
value="pageFooter"/>
Note that there is no property prefix available to keep the last occurrence of a band. If 
you would want to keep the last page footer, then the best solution is to actually use the 
<lastPageFooter> section of the report template. 
If you want to remove both page headers and page footers and also the group footers of a 
group called ProductGroup, that comes from a subreport called ProductReport 
this custom properties are needed: 
<property 
name="net.sf.jasperreports.export.xls
.exclude.origin.band.1" 
value="pageHeader"/>
P
AGE
239
Extract text from pdf java - 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 with acrobat; a pdf text extractor
Extract text from pdf java - 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 online; how to copy and paste pdf text
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
<property 
name="net.sf.jasperreports.export.xls
.exclude.origin.band.2" 
value="pageFooter"/>
<property 
name="net.sf.jasperreports.export.xls
.exclude.origin.band.3" 
value="groupHeader"/>
<property 
name="net.sf.jasperreports.export.xls
.exclude.origin.group.3" 
value="ProductGroup"/>
<property 
name="net.sf.jasperreports.export.xls
.exclude.origin.report.3" 
value="ProductReport"/>
Note that the number at the end of the properties names is just an arbitrary suffix. The 
only thing that counts is that the suffix be the same for properties referring to the same 
filter. The last three properties in the above example define the filter that will exclude 
group header of ProductGroup from ProductReport subreport. Instead of the 
numeric suffix, you could put any suffix, as long as it does not coincide with suffixes 
from other filters. The following example will exclude the same group header while 
keeping its first occurrence: 
<property 
name="net.sf.jasperreports.export.xls
.exclude.origin.keep.first.band.myGroupFilter" 
value="groupHeader"/>
<property 
name="net.sf.jasperreports.export.xls
.exclude.origin.keep.first.group.myGroupFilter" 
value="ProductGroup"/>
<property 
name="net.sf.jasperreports.export.xls
.exclude.origin.keep.first.report.myGroupFilter" 
value="ProductReport"/>
The xls token inside the properties prefixes refer to the particular export format that is 
targeted and the general syntax of the origin exporter filter properties is: 
net.sf.jasperreports.export.{format}
.exclude.origin.{suffix}.{arbitrary_name}
net.sf.jasperreports.export.{format}
.exclude.origin.keep.first.{suffix}.{arbitrary_name}
Other supported format tokens are pdf, html, rtf, odt, xml, txt, csv and 
graphics2d, while the only accepted suffixes are band, group and report. 
P
AGE
240
Generate and draw PDF 417 for Java
Download the Java PDF 417 Generation Package and extract the file. PDF417 barcode = new PDF417(); //Encode data for PDF 417 barcode image text in Java
c# read text from pdf; cut and paste text from pdf document
Generate and draw Code 39 for Java
Download the Java Code 39 Generation Package and extract the file. True"); //Encode data for Code 39 barcode image text in Java Class barcode.setData("Java
can't copy text from pdf; pdf text replace tool
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
These properties make best sense when placed inside a report, to filter out specific 
portions of that particular document, but they also work globally, if placed in the 
jasperreports.properties file. This would allow removing the page headers 
and page footers from all reports, when exporting to XLS, for example. 
All the above examples can be tested by putting the properties in the 
MasterReport.jrxml file of the /demo/samples/subreport sample 
provided with the project distribution package.
E
LEMENT
K
EY
F
ILTER
This built-in filter implementations excludes from export elements that match a given 
element key.
Element keys are set at report design time and are propagated into generated reports. 
Each element in a filled report has the same key as the element from the report template 
that generated it.
To trigger an element key filter, the report designer needs to define one or more report 
properties that start with 
<exporter_property_prefix>>.exclude.key
. Each such 
property matches a single element key which is to be excluded by the filter. The element 
key is given by the property value, or if no value is set for the property, by the property 
suffix.
The following example shows how to specify element keys which are to be excluded 
from specific export outputs:
<jasperReport ...>
<!-- exclude elements with keys Image1 and Text4 from HTML export 
-->
<property 
name=”net.sf.jasperreports.export.html.exclude.key.Image1”/>
<property 
name=”net.sf.jasperreports.export.html.exclude.key.Text4”/>
<!-- exclude elements with keys Image5 from PDF export -->
<property 
name=”net.sf.jasperreports.export.pdf.exclude.key.the.image” 
value=”Image5”/>
...
</jasperReport>
P
AGE
241
Java Imaging SDK Library: Document Image Scan, Process, PDF
Using RasterEdge Java Image SDK, developers can easily open, read, edit, convert and such as: Bitmap, Jpeg, Gif, Png, Tiff, Jpeg2000, DICOM, JBIG2, PDF, MS Word
extract text from pdf; copying text from pdf to excel
Generate and Print 1D and 2D Barcodes in Java
Text options include show text or not, text margin setting like QR Code, Data Matrix and PDF 417 in For EAN and UPC barcode supported by Java Barcode Generator
extract text from pdf c#; get text from pdf image
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
M
ONITORING
E
XPORT
P
ROGRESS
Some applications need to display a progress bar to show the user how much has been 
already processed from the supplied document and how much remains to be exported. 
All exporters can inform the caller program of their progress through a simple interface 
called 
net.sf.jasperreports.engine.export.JRExportProgressMonitor
. To 
monitor the exporter’s progress, implement this interface and supply an instance of its 
export progress monitor class as the value for the 
PROGRESS_MONITOR
parameter, which 
is recognized by almost all built-in exporters.
The interface has only one method, 
afterPageExport()
, which gets called by the 
exporter on the monitor object after exporting each page from the supplied document. 
The monitor object can keep track of the number of pages already exported and the total 
number of pages to be exported by checking the number of pages in the source 
JasperPrint
object.
The supplied 
/demo/samples/scriptlet
sample shows how a simple export monitor 
can be used to track exporter progress.
G
RID
E
XPORTERS
The main goal of the JasperReports library is to produce high-quality, pixel-perfect 
documents for printing. The documents it produces can have rich content, and all the 
elements on a given page are positioned and sized absolutely. The library tries to keep 
the same document quality throughout all supported export formats, but there are some 
limitations for each of these formats. All existing exporters fall into one of two 
categories, depending on the way the content of the documents they produce can be 
structured:
 The exporters that target document formats that support free-form page content. 
These are the 
Graphics2D
, PDF, RTF, and XML exporters.
 Exporters that target document formats that only support relative positioning of 
elements on a page or a grid-based layout. In this category are the HTML, XLS, 
and CSV exporters.
Exporters from this second category are also known as grid exporters because the layout 
of the documents they produce is formed by a grid. For instance, the HTML exporter will 
generate a 
<table>
element for each page and try to put each element on that page 
inside a 
<td>
tag. Likewise, the XLS exporter must put each element inside a sheet cell.
These grid exporters have an obvious limitation: a built-in algorithm for transforming an 
absolutely positioned page layout into a grid-based layout. This algorithm analyzes each 
page and tries to build a virtual table in which to place elements so that the overall layout 
of the document remains intact. However, since a table cell can contain only a single 
element, elements that overlap in the initial absolutely positioned layout will not display 
P
AGE
242
.NET PDF SDK | Read & Processing PDF files
grayscale raster images, search & extract text, highlight regions Include extraction of text, hyperlinks, bookmarks and royalty-free .NET Imaging PDF Reader SDK
copy highlighted text from pdf; export text from pdf
.NET OCR SDK | Optical Character Recognition
Able to extract text fromfacsimiles, photocopies and documents with complex few codes; Output OCR results to memory, text searchable PDF, PDF/A, Word
extract text from image pdf file; a pdf text extractor
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
correctly in a grid-based layout. In fact, when two elements overlap, the element behind 
will not even appear in the grid-based layout.
C
REATING
G
RID
-F
RIENDLY
R
EPORT
L
AYOUTS
When the report templates are very complex or agglomerated, passing from absolute 
positioning to grid or table layout produces very complex tables with many unused rows 
and columns, in order to make up for the empty space between elements or their special 
alignment. Here are a few very simple guidelines for obtaining optimized HTML, XLS, 
or CSV documents when using the built-in JasperReports grid exporters:
1. Minimize the number of rows and columns in the grid-oriented formats (the number 
of “cuts”). To do this, align your report elements as often as you can, both on the 
horizontal and the vertical axes, and eliminate the space between elements.
Figure 18-1. Inefficient layout (left) and grid-friendly layout (right)
2. Make sure report elements will not overlap when the report is generated. If two 
elements share a region, they cannot share the same cell in the resulting grid structure. 
Overlapping elements might lead to unexpected results.
F
ONT
M
APPINGS
Since exported documents will probably be transferred and viewed on other systems and 
platforms, be especially careful with fonts. In the “Fonts and Unicode Support” section 
on page 124 we talked about fonts, how they work, and what needs to be done with them 
when exporting to PDF format. We have explained how the PDF font mappings are 
made using the attributes 
pdfFontName
pdfEncoding
, and 
isPdfEmbedded
. However, 
the font mapping issue is not specific to PDF, and similar mappings are required when 
exporting to other formats, like HTML or RTF.
P
AGE
243
C# PowerPoint: Read, Decode & Scan Barcode Image from PowerPoint
C# PowerPoint: Decode PDF-417 Barcode Image, C# PowerPoint: Detect ISBN Barcode Image. com is professional .NET Document Imaging SDK and Java Document Imaging
extract text from pdf open source; copy text from pdf without formatting
.NET Form Processing SDK | Form Processing & Recognition
Quickly identify and extract text regardless of resolution, scale and more; Advanced com is professional .NET Document Imaging SDK and Java Document Imaging
copy text from protected pdf; extract text from pdf java open source
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
The three PDF-related font attributes are only present in JRXML and in the object model 
today  for historical reasons; JasperReports started with support for PDF export, and at 
the time we did not realize that this would be a common issue for various export formats. 
Even though the three original PDF font attributes specified inside the report template 
are still supported, they are now deprecated. We recommend making all the required font 
mappings at export time using the font extension support, as explained in section “Font
Extensions“ on page  282. Inside each font family declared by a font extensions, we can 
specify what font name to use for that particular font family while the report is exported. 
The font family mapping for report export can be made on a per export format basis, but 
in general, the same font name is used for all export formats; only PDF is special in this 
regard and requires more complex font mappings. The former 
FONT_MAP
exporter 
parameter, which is recognized by all the exporters that work with fonts, is still 
supported for exporter font mappings, but it is now deprecated and replaced with the 
more advanced font extension mechanism.
For more details about export-time font mappings, please refer to the later sections in this 
chapter that present exporters individually, because the same exporter parameter is used 
differently by each of the exporters.
G
RAPHICS
2D E
XPORTER
JasperReports relies on AWT for text measurements and all sorts of layout calculations 
during report filling, so documents created using AWT will certainly look perfect when 
rendered with AWT on a 
java.awt.Graphics2D
context. For this reason, the 
net.sf.jasperreports.engine.export.JRGraphics2DExporter
is the perfect 
exporter. The output it produces is considered to be the reference in terms of layout 
capabilities and element styling.
Generally speaking, the document quality produced by all the other exporters is only an 
approximation of the perfect output that the 
Graphics2D
exporter can produce. As its 
name indicates, this exporter is special because it does not produce files or send character 
or binary data to an output stream. Instead, its only target for rendering the content of a 
page is a 
java.awt.Graphics2D
object. This exporter is also special because it can 
export only one page at a time.
This exporter is used by the built-in Swing viewer to render the content of each page, and 
it is also used when printing the documents. The documents are printed page by page, 
and the exporter is invoked to draw each document page on the graphic context 
associated with the selected printer job.
Because we are relying on the same code (same exporter) when viewing the documents 
using the built-in viewer and when printing them, JasperReports is a perfect WYSIWYG 
tool. The document quality on paper is the same as on the screen.
In terms of exporter input, note that this exporter does not work in batch mode. If a 
java.util.List
of 
JasperPrint
documents is supplied to it using the 
P
AGE
244
.NET PDF Generator | Generate & Manipulate PDF files
multipage PDF documents with images, text, barcode, annotations royalty-free .NET Imaging PDF Generator of NET Document Imaging SDK and Java Document Imaging
get text from pdf online; copy paste text pdf
TIFF to PDF Converter | Convert TIFF to PDF, Convert PDF to TIFF
for TIFF-PDF Conversion; Able to preserve text and PDF Open TIFF to PDF Converter first; Load PDF images from NET Document Imaging SDK and Java Document Imaging
edit pdf replace text; find and replace text in pdf file
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
JASPER_PRINT_LIST
parameter, it considers only the first one for exporting and ignores 
all the others.
Furthermore, this exporter can export only a single page at a time. The index of the page 
to be exported can be set using either the 
START_PAGE_INDEX
parameter or the 
PAGE_INDEX
parameter. Note that if present, 
PAGE_INDEX
overrides the value of 
START_PAGE_INDEX
. Therefore, this exporter actually exports only the first page from 
the specified page range, no matter how the page range is specified.
As already mentioned, this exporter needs a target 
java.awt.Graphics2D
object onto 
which to render the specified page. This 
Graphics2D
object can be set using the special 
exporter parameter 
GRAPHICS_2D
. If this parameter is not set, the exporter will throw an 
exception signaling to the caller program that no output target was specified for the 
export process.
By default, the exporter renders the content of the page at normal proportions. However, 
it can also render it at different proportions if needed. For instance, when used inside the 
Swing viewer, the 
Graphics2D
exporter must render the page using the user-defined 
zoom ratio. To set the zoom ratio for the exporter, supply a 
java.lang.Float
value 
ranging from 0 to 1 as the value for the 
ZOOM_RATIO
exporter parameter.
The 
Graphics2D
exporter is also used when printing directly from Java. The Java Print 
Service exporter, presented in the following section, relies on the 
Graphics2D
exporter 
and delegates to it all the rendering that needs to be performed on the printer’s graphic 
context. Some of the existing JVM implementations have problems related to the huge 
size of the printer spool jobs that are created even for small documents. To avoid this, a 
bug fix was introduced in the 
Graphics2D
exporter to minimize the impact of this 
problem and reduce the size of print spool jobs, while preserving document quality when 
printing. However, the bug fix itself is not perfect, and users might experience problems 
when printing bidirectional writing texts such as Arabic and Hebrew.
This is why the special 
JRGraphics2DExporterParameter.MINIMIZE_PRINTER_JOB_SIZE
exporter 
parameter was introduced, along with a configuration property called 
net.sf.jasperreports.export.graphics2d.min.job.size
, to allow users to turn 
on and off this rendering optimization, depending on their actual needs. The 
configuration property value is used only in the absence of the exporter parameter.
J
AVA
P
RINT
S
ERVICE
E
XPORTER
In the “Printing Reports” section on page 27 we explained how to print generated reports 
in JasperReports. As mentioned there, JDK 1.4 added a new printing API called the Java 
Print Service API, which gives Java applications better control over selecting a printer 
based on its capabilities or when printing documents in specific formats.
P
AGE
245
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
Access to this new printing API is available in JasperReports through a special exporter 
implementation called the 
net.sf.jasperreports.engine.export.JRPrintServiceExporter
.
There are four ways of using the Java Print Service with the Java 2D API:
 Printing 2D graphics using 
PrinterJob
 Streaming 2D graphics using 
PrinterJob
 Printing 2D graphics using 
DocPrintJob
and a service-formatted 
DocFlavor
 Streaming 2D graphics using 
DocPrintJob
and a service-formatted 
DocFlavor
The 
net.sf.jasperreports.engine.export.JRPrintServiceExporter 
implementation takes the first approach and uses some of the new methods added to the 
java.awt.print.PrinterJob
class:
 Static convenience methods to look up print services that can image 2D graphics, 
which are returned as an array of 
PrintService
or 
StreamPrintServiceFactory
objects depending on the method
 Methods to set and get a 
PrintService
on a 
PrinterJob
 A 
pageDialog()
method that takes a 
PrintRequestAttributeSet
parameter
 A 
printDialog()
method that takes a 
PrintRequestAttributeSet
parameter
 A print method that takes a 
PrintRequestAttributeSet
parameter
L
OOKING
U
P
A
P
RINTING
S
ERVICE
This exporter tries to find a print service that supports the necessary attributes. The set of 
attributes can be supplied to the exporter in the form of a 
javax.print.attribute.PrintServiceAttributeSet
object that is passed as the 
value for the special 
PRINT_SERVICE_ATTRIBUTE_SET
exporter parameter. For more 
details about the attributes that can be part of such an attribute set, check the Java Print 
Service API documentation.
The lookup procedure might return one or more print services able to handle the 
specified print service attributes. If so, the exporter uses the first one in the list. If no 
suitable print service is found, then the exporter throws an exception. As an alternative, a 
javax.print.PrintService
instance can be passed in using the 
PRINT_SERVICE 
exporter parameter when users do not want the Java Print Service to search for an 
available print service.
C
ONFIGURING
THE
P
RINTER
J
OB
Once a print service has been located, it is associated with a 
PrinterJob
instance. 
Further customization is made by passing a 
javax.print.attribute.PrintRequestAttributeSet
instance when calling the 
print()
method on the 
PrinterJob
object to start the printing process.
P
AGE
246
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
To supply the 
javax.print.attribute.PrintRequestAttributeSet
object 
containing the desired 
javax.print.attribute.PrintRequestAttribute
values to 
the exporter, set the special 
PRINT_REQUEST_ATTRIBUTE_SET
exporter parameter.
D
ISPLAYING
P
RINT
D
IALOGS
If this exporter is invoked by a desktop or client-side Java application, you can offer the 
end user a final chance to customize the printer job before the printing process actually 
starts. The exporter has two other predefined parameters: 
DISPLAY_PAGE_DIALOG
and 
DISPLAY_PRINT_DIALOG
, both receiving 
java.lang.Boolean
values, which show or 
suppress the page dialog and/or the print dialog associated with the 
PrinterJob 
instance.
The two dialogs are cross-platform. They enable users to alter the print service attributes 
and the print request attributes that are already set for the current print service and printer 
job. They also allow canceling the current printing procedure altogether. When batch 
printing a set of documents, if 
DISPLAY_PAGE_DIALOG
or 
DISPLAY_PRINT_DIALOG
are 
set to 
true
, a dialog window will pop up each time a document in the list is to be 
printed. This is very useful if you intend to set different printing options for each 
document. However, setting the same page/printing options each time would quickly 
become cumbersome. If same settings are intended for all documents in the list, the 
exporter provides two additional predefined parameters: 
DISPLAY_PAGE_DIALOG_ONLY_ONCE
and 
DISPLAY_PRINT_DIALOG_ONLY_ONCE
. These 
are only effective if the corresponding 
DISPLAY_PAGE_DIALOG
or 
DISPLAY_PRINT_DIALOG
parameter is 
true
.
If 
DISPLAY_PAGE_DIALOG_ONLY_ONCE
is 
true
, then the page dialog will open only 
once, and the export options set within will be preserved for all documents in the list. 
The same thing happens when 
DISPLAY_PRINT_DIALOG_ONLY_ONCE
is set to 
true
the print dialog will open only once.
The 
JRPrintServiceExporter
can be used only with JRE 1.4 or later. The supplied 
/demo/ samples/printservice
sample shows you how.
PDF E
XPORTER
Exporting to PDF was among the initial requirements for the JasperReports library. As 
its name indicates, PDF is a very precise and complex document format that ensures 
documents will look and print the same on all platforms.
This is why the PDF exporter implemented by the 
net.sf.jasperreports.engine.export.JRPdfExporter
class in JasperReports is 
one of the best exporters. The output it produces is almost of the same quality as that 
produced by the 
net.sf.jasperreports.engine.export.JRGraphics2DExporter
which is always the reference.
P
AGE
247
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
The 
JRPdfExporter
implementation uses iText, which is a specialized PDF-generating 
library. PDF is a binary document format that allows absolute positioning of the 
elements inside a page, so the existing PDF exporter does not have the limitations of a 
grid exporter.
It also works very well in batch mode because it allows concatenation of multiple 
documents within the same PDF file, even if the files have different page sizes.
F
ONT
M
APPINGS
As discussed in the “Fonts and Unicode Support” section on page 124, exporting to PDF 
requires mapping the fonts using three attributes: 
pdfFontName
pdfEncoding
, and 
isPdfEmbedded
. Even though these three attributes are still supported in JRXML and 
the API, we recommend making the PDF font mappings at export time using font 
extensions, as explained in the Font Extensions section on page 282. Below, we are 
showing how to make use of the FONT_MAP exporter parameter, which is still 
supported but is somewhat deprecated by the introduction of font extensions.
When exporting documents to PDF, for each combination of the three 
fontName
isBold
, and 
isItalic
font attributes, there must be an equivalent combination of the 
PDF-related font attributes 
pdfFontName
pdfEncoding
, and 
isPdfEmbedded
.
Equivalent combination means one that causes the text elements to be rendered exactly 
the same (or at least as closely as possible) in PDF and the built-in 
Graphics2D 
exporter, which is the reference.
If a value is supplied for the 
FONT_MAP
exporter parameter, the PDF exporter expects it 
to be a 
java.util.Map
instance that contains 
net.sf.jasperreports.engine.export.FontKey
objects as keys and 
net.sf.jasperreports.engine.export.PdfFont
objects as corresponding values. 
It then uses those key-value pairs as font mappings to render text elements in PDF.
In some cases, there is no font file available to use with the 
pdfFontName
attribute in 
order to render bold and italic text exactly like the 
Graphics2D
exporter renders it in 
AWT. Those fonts might only have a normal style variant and no variants for bold and 
italic. In such cases, the PDF exporter (the iText library, to be more precise) is able to 
simulate those styles by applying transformations to the normal font glyphs.
This feature can be turned on by using the Boolean 
isPdfSimulatedBold
and 
isPdfSimulatedItalic
parameters in the constructor of the 
PdfFont
objects that are 
part of the font mapping construct.
Note
Although the above mentioned attributes and the FONT_MAP exporter parameter are still supported, 
we recommend all export font mappings be done using font extension support, as explained in section “Font
Extensions“ on page 282.
P
AGE
248
Documents you may be interested
Documents you may be interested