free pdf viewer c# : Cut and paste pdf text application SDK tool html .net wpf online JasperReports-Ultimate-Guide-326-part1355

T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
B
ATCH
M
ODE
B
OOKMARKS
When several 
JasperPrint
documents must be concatenated in the same PDF file by 
batch export, you can introduce PDF bookmarks in the resulting PDF document to mark 
the beginning of each individual document that was part of the initial document list. 
These bookmarks have the same name as the original 
JasperPrint
document as 
specified by the 
jasperPrint.getName()
property. However, users can turn on and off 
the creation of those bookmarks by setting the 
IS_CREATING_BATCH_MODE_BOOKMARKS 
exporter parameter to 
Boolean.TRUE
or 
Boolean.FALSE
. The exporter does not create 
such bookmarks by default.
The supplied 
/demo/samples/batchexport
sample shows how this parameter works.
E
NCRYPTED
PDF
In some cases, users might want to encrypt the PDF documents generated by 
JasperReports so that only authorized viewers can have access to those documents.
There are five exporter parameters for this:
IS_ENCRYPTED
: When set to 
Boolean.TRUE
, this parameter instructs the exporter to 
encrypt the resulting PDF document. By default PDF files are not encrypted.
IS_128_BIT_KEY
: The PDF exporter can encrypt the files using either a 40-bit key or a 
128-bit key. By default, it uses a 40-bit key, but if you set this flag to 
Boolean.TRUE
, it 
can be configured to use a 128-bit key for stronger encryption.
USER_PASSWORD
: This parameter specifies the password required from a normal PDF file 
user to access the document.
OWNER_PASSWORD
: This parameter specifies the password required from the owner of the 
PDF file to access the document. The owner usually has more permissions. If this 
password is not set, an arbitrary string will be used when encrypting so that access is 
denied to all would-be owners.
PERMISSIONS
: This exporter parameter accepts 
java.lang.Integer
values 
representing the PDF permissions for the generated document. The open permissions for 
the document can be 
AllowPrinting
AllowModifyContents
AllowCopy
AllowModifyAnnotations
AllowFillIn
AllowScreenReaders
AllowAssembly
and 
AllowDegradedPrinting
(these are all in the 
PdfWriter
class of the iText 
library). Permissions can be combined by applying bitwise OR to them.
A special sample, 
/demo/samples/pdfencrypt
, is supplied with the project to show 
how to use all these exporter parameters.
P
AGE
249
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
copy text from scanned pdf; copy formatted text from pdf
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
copy pdf text to word document; delete text from pdf online
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
PDF V
ERSION
AND
C
OMPRESSION
Some applications require marking the generated files with a particular PDF 
specifications version.
The 
PDF_VERSION
exporter parameter accepts 
java.lang.Character
values, but only 
a few values are recognized as valid, so users have to use the constants defined in the 
JRPdfExporterParameter
class to point to the PDF specification version (from 1.2 to 
1.6).
Since version 1.5, the PDF format supports compression. By default, the PDF exporter in 
JasperReports does not create compressed PDF documents, but this feature can be turned 
on using the 
IS_COMPRESSED
exporter parameter. Note that because compressed PDFs 
are available only since PDF version 1.5, the PDF version of the resulting document is 
set to 1.5 automatically if compression is turned on.
W
ORD
W
RAP
AND
L
INE
B
REAK
P
OLICY
By default, the PDF exporter does not guarantee that text with the same style properties 
will be rendered exactly as it is using AWT. The word wrap and line break policy is 
slightly different, and in some cases it might cause portions of text to disappear at the 
end of longer text paragraphs. 
To make sure this does not happen, you can configure the PDF exporter to use the AWT 
word wrap and line break policy by setting the 
FORCE_LINEBREAK_POLICY
parameter to 
Boolean.TRUE
. Note that this feature is not turned on by default, because it affects the 
exporter performance. This default behavior that applies in the absence of the mentioned 
export parameter can be controlled using the 
net.sf.jasperreports.export.pdf.force.linebreak.policy
configuration 
property (see “Configuration Files” on page 272 for more details).
J
AVA
S
CRIPT
A
CTIONS
The PDF specifications provide a means for the automation of various processes, such as 
the automatic printing of the document when it is opened. PDF viewer applications are 
able to execute Acrobat JavaScript code that is embedded in the PDF and associated with 
different events.
JasperReports only allows inserting Acrobat JavaScript code. This code gets executed 
when the PDF document is opened in the viewer. This can be achieved using the 
JRPdfExporterParameter.PDF_JAVASCRIPT
parameter, which takes the Acrobat 
JavaScript source code as value. Note that Acrobat JavaScript is a programming 
language based on JavaScript, originally developed by Netscape Communications. More 
details about this can be found in the iText documentation.
P
AGE
250
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 acrobat; find and replace text in pdf
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.
extract text from scanned pdf; extracting text from pdf
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
M
ETADATA
I
NFORMATION
PDF documents can store metadata information such as the author of the document, its 
title, and keywords. JasperReports exposes this feature of PDF through special exporter 
parameters having the 
METADATA
prefix and found in the 
JRPdfExporterParameter 
class. They are all listed following:
METADATA_TITLE
METADATA_AUTHOR
METADATA_SUBJECT
METADATA_KEYWORDS
METADATA_CREATOR
R
ENDERING
SVG U
SING
S
HAPES
The 
JRPdfExporterParameter.PDF_FORCE_SVG_SHAPES
flag is used to force the 
rendering of SVG images using shapes on the PDF 
Graphics2D
context. This allows 
fonts to be rendered as shapes, thus avoiding any font mapping issues that might cause 
Unicode text to not show up properly; however, it has the disadvantage of producing 
larger PDF files.
By default, the flag is set to 
true
, mainly due to backward-compatibility reasons. To 
reduce PDF file size for documents containing SVG images such as charts, this flag 
should be set to 
false
. However, in such a case, the accuracy of the text content 
rendered by the SVG element in PDF depends on the correct PDF font information being 
available in the SVG implementation itself.
In JasperReports, SVG elements are rendered using 
JRRenderable
implementations, 
which are most likely subclasses of the 
JRAbstractSvgRenderer
class (like the 
JFreeChartRenderer
class used to draw charts when the built-in chart element is used 
in the report). SVG renderer implementations should be concerned only with 
implementing the 
public void render(Graphics2D grx, Rectangle2D 
rectangle) throws JRException;
method, which should contain all the code 
required for rendering the SVG on a 
Graphics2D
context. Correct PDF font information 
means that the 
java.awt.Font
objects used to draw text on the 
Graphics2D
context 
should have PDF-related text attributes embedded so that when rendered on a PDF 
Graphics2D
context, the exporter can make use of them. Embedding PDF-related text 
attributes into the SVG means using the following text attributes when creating 
java.awt.Font
to render text in the SVG renderer implementation:
JRTextAttribute.PDF_FONT_NAME
JRTextAttribute.PDF_ENCODING
JRTextAttribute.IS_PDF_EMBEDDED
The built-in chart component in JasperReports hides this complexity of dealing with 
fonts in a SVG renderer by exposing to the end user the usual three PDF-specific font 
attributes (
pdfFontName
pdfEncoding
, and 
isPdfEmbedded
) to be set along with the 
P
AGE
251
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.
erase text from pdf; copy text from protected pdf to word
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
copy text pdf; c# extract pdf text
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
normal font attributes every time a font setting is made for the chart title, subtitle, chart 
legend, or axis. This feature can be controlled system-wide using the 
net.sf.jasperreports.export.pdf.force.svg.shapes
configuration property. 
The 
PDF_FORCE_SVG_SHAPES
export parameter overrides the configuration property 
value, if present.
S
ECTION
508 C
OMPLIANCE
PDF files can contain hidden tags that describe the structure of the document. Some of 
the tags are used by the automated reader tool that reads PDF documents aloud to people 
with disabilities.
The PDF tags feature of JasperReports allows adding hidden PDF tags to the files 
generated by the JasperReports PDF exporter. The resulting files comply with the 
requirements of the Section 508 of the U.S. Rehabilitation Act 
(http://www.section508.gov/).
Producing Tagged PDF Files
By default, the JasperReports exporter does not put any hidden structural tags inside its 
generated PDF files. In order to turn on the creation of hidden structural tags, any of the 
following can be used:
  The 
JRPdfExporterParameter.IS_TAGGED
can be set to 
Boolean.TRUE
when 
configuring the exporter object;
  The 
net.sf.jasperreports.export.pdf.tagged
configuration property can 
be set to true in the 
jasperreports.properties
file;
  The 
net.sf.jasperreports.export.pdf.tagged
report property (exporter 
hint) can be set to 
true.
Setting the PDF File Language
When a full accessibility check is requested from Acrobat Professional, among the things 
it determines is whether the PDF file or the various pieces of content inside it have a 
language set. JasperReports allows setting the language for the entire content by doing 
any one of the following:
 The 
JRPdfExporterParameter.TAG_LANGUAGE
can be used to set the language 
as a 
java.lang.String
value;
 The 
net.sf.jasperreports.export.pdf.tag.language
configuration 
property can be set to specify the language globally in the 
jasperreports.properties
file;
 The 
net.sf.jasperreports.export.pdf.tag.language
report property 
(exporter hint) can be used inside the report template to specify the language.
P
AGE
252
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.
delete text from pdf; copy pdf text to word
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
cut and paste pdf text; copy text from pdf to word
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
Alternate Text for Images
In tagged PDF files, image elements can be described in alternate text that is read by the 
automated reader. The text is specified using the 
hyperlinkTooltipExpression 
property of the image element in JRXML.
Marking Headings
JasperReports currently supports specifying type 1, 2 and 3 level headings.
In order to mark a text field as a level 1 heading, the following custom element property 
should be used in JRXML:
<property name="net.sf.jasperreports.export.pdf.tag.h1" 
value="full"/>
Value 
full
means that a full 
<H1>
tag will be embedded in the PDF wrapping the 
current text element.
If two or more text fields make up a single level 1 heading, there are two ways to mark 
the heading:
 In the first, the text elements making up the heading are placed inside a frame and 
the frame is marked with the following custom property:
<property name="net.sf.jasperreports.export.pdf.tag.h1" 
value="full"/>
 In the second, the first element of the heading (respective to the Z-Order, or the 
order in which the elements appear in JRXML) is tagged with:
<property name="net.sf.jasperreports.export.pdf.tag.h1" 
value="start"/>
and the last element from the heading (respective to the same order) is marked with
<property name="net.sf.jasperreports.export.pdf.tag.h1" 
value="end"/>
Level 2 and level 3 headings are marked the same way, except that the properties are:
net.sf.jasperreports.export.pdf.tag.h2
and
net.sf.jasperreports.export.pdf.tag.h3
Marking Tables
Tables are comprised of column headers, row headers, and a data section. Each table 
section is made of cells. Marking table structures in PDF is similar to the way tables are 
described in HTML and uses the same techniques as those for marking headings 
presented in “Marking Headings” on page 254.
P
AGE
253
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 pdf in preview; copy text from pdf
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.
copy text from scanned pdf to word; extract pdf text to word
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
When marking a table, the user has to indicate in the report template where the table 
starts and where it ends.
If the entire table is placed in a container, such as a frame element, marking the table 
requires only marking the parent frame with the following custom element property:
<property name="net.sf.jasperreports.export.pdf.tag.table" 
value="full"/>
However, most of the time, tables cannot be isolated in a frame unless they are 
subreports, because they generally span multiple report sections and bands. In such 
cases, marking a table requires marking in JRXML the first and last element making up 
the table structure.
The first element of the table (probably the first element in the table header) should be 
marked with the following custom property:
<property name="net.sf.jasperreports.export.pdf.tag.table" 
value="start"/>
The last element of the table should be marked with:
<property name="net.sf.jasperreports.export.pdf.tag.table" 
value="end"/>
Tables are made of rows, and each row has to be precisely delimited within the table 
structure. This includes the column header rows at the top of the table. Similar to the 
headings and table marking, a table row can be identified in two ways:
If the entire content that makes up the row is isolated within a frame, the frame can be 
marked with the following custom property:
<property name="net.sf.jasperreports.export.pdf.tag.tr" 
value="full"/>
If the content of the row is not grouped in a container frame, its first and last elements 
(respective to the Z-order or the order in which they appear in JRXML) have to be 
marked with the following custom properties:
<property name="net.sf.jasperreports.export.pdf.tag.tr" 
value="start"/> 
for the first element and 
<property name="net.sf.jasperreports.export.pdf.tag.tr" 
value="end"/> 
for the last element.
Each table row can contain header cells or data cells. Regardless of their type, and 
similar to headings, tables, and table rows, cells can be marked either by marking a 
single element representing the cell content (this single cell element can actually be a 
frame element), or by marking the first and last element from the cell content.
P
AGE
254
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.
c# get text from pdf; copy pdf text with formatting
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
Header cells made of a single element (this single element can actually be a frame) are 
marked with
<property name="net.sf.jasperreports.export.pdf.tag.th" 
value="full"/>
A header cell made of multiple elements is marked with
<property name="net.sf.jasperreports.export.pdf.tag.th" 
value="start"/> 
on its first element and
<property name="net.sf.jasperreports.export.pdf.tag.th" 
value="end"/> 
on its last element.
Normal data cells made of a single element (can be frame) are marked with
<property name="net.sf.jasperreports.export.pdf.tag.td" 
value="full"/>
Normal data cells made of multiple elements are marked with
<property name="net.sf.jasperreports.export.pdf.tag.td" 
value="start"/> 
on their first element and
<property name="net.sf.jasperreports.export.pdf.tag.td" 
value="end"/> 
on their last element.
Just as in HTML tables, cells can span multiple rows and/or columns. Column span and 
row span values for the current table cell can be specified using the following custom 
properties on the same element where the cell start was marked (the element with the 
full
or 
start
property marking the cell):
<property name="net.sf.jasperreports.export.pdf.tag.colspan" 
value="number"/>
<property name="net.sf.jasperreports.export.pdf.tag.rowspan" 
value="number"/>
PDF Content Reading Order
JasperReports uses the Z-order of the elements as present in the report template 
(JRXML) to control reading order in the resulting PDF files. This is usually the intended 
way for the documents to be read, so no specific modifications were required in order to 
achieve it.
P
AGE
255
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
RTF E
XPORTER
The 
net.sf.jasperreports.engine.export.JRRtfExporter
implementation helps 
to export 
JasperPrint
documents in RTF format using RTF Specification 1.6. This 
means that the RTF files produced by this exporter are compatible with Microsoft Word 
6.0, 2003, and XP.
However, users might experience some problems when opening those RTF files with 
OpenOffice or StarOffice, as these products are not perfectly compatible with the RTF 
specifications from Microsoft.
RTF is a character-based file format that supports absolute positioning of elements, 
which means that this exporter produces output very similar to that of the 
Graphics2D 
and PDF exporters. There are no special parameters for this exporter.
Almost all the provided samples show how to export to RTF.
F
ONT
M
APPINGS
The RTF exporter expects to find a 
java.util.Map
instance as the value for the 
FONT_MAP
exporter parameter. If such a value is supplied at export time, then this 
exporter assumes that this map contains key-value pairs where both the keys and the 
values are 
java.lang.String
values. The key represents the name of the font as 
specified by the 
fontName
attribute in JRXML. The value represents the name of the 
font to use when generating the corresponding RTF font tags in the destination file.
This font mapping capability is particularly useful when the report template uses Java 
logical fonts as values for the 
fontName
attribute (Serif, SansSerif, Monospaced, etc.) 
and these need to be translated into real TTF font names during the RTF export process.
DOCX E
XPORTER
Exporting generated reports to Microsoft Word 2007 format (DOCX) can be achieved 
using the 
net.sf.jasperreports.engine.export.ooxml.JRDocxExporter 
implementation.
Since this exporter is also a grid exporter, it has the known limitations of grid exporters 
(see “Grid Exporters” on page 243). It can work in batch mode and supports all types of 
exporter input and output, content filtering, and font mappings.
Currently, there are only two special configurations that can be made to a DOCX 
exporter instance:
 Forcing the use of nested tables to render the content of frame elements using either 
the JRDocxExporterParameter.FRAMES_AS_NESTED_TABLES exporter 
parameter or its corresponding exporter hint called 
net.sf.jasperreports.export.docx.frames.as.nested.tables
.
P
AGE
256
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
 Allowing table rows to adjust their height if more text is typed into their cells using 
the Word editor. This is controlled using either the 
JRDocxExporterParameter.FLEXIBLE_ROW_HEIGHT
exporter parameter, or its 
corresponding exporter hint called 
net.sf.jasperreports.export.docx.flexible.row.height
.
XML E
XPORTER
The discussion of the ways to store generated 
JasperPrint
objects in the “Loading and
Saving Generated Reports” section on page 24 mentioned the 
net.sf.jasperreports.engine.export.JRXmlExporter
as a possible way to 
transform documents into a text-based format. As report templates are defined using the 
special XML syntax JRXML, the JasperReports library also has a special XML structure 
for storing generated documents in XML format. This format is called JRPXML because 
the files produced by the 
JRXmlExporter
usually have the 
*.jrpxml
extension. These 
XML files can be loaded back into the 
JasperPrint
object using the 
net.sf.jasperreports.engine.xml.JRPrintXmlLoader
utility class. Their 
structure is validated against an internal DTD file called 
jasperprint.dtd
. This 
document does not provide the details of the JRPXML structure. Valid JRPXML files 
should point to the internal DTD file using a public ID, as follows:
<!DOCTYPE jasperPrint PUBLIC "-//JasperReports//DTD 
JasperPrint//EN" 
"http://jasperreports.sourceforge.net/dtds/jasperprint.dtd">
The root element of a JRPXML document is 
<jasperPrint>
, which contains a list of 
report font definitions (
<reportFont>
tags) that are reused by text elements throughout 
the document, and a list of pages 
(<page>
tags), each of which contains a nested list of 
elements like lines, rectangles, ellipses, images, and texts.
The quality of this exporter is equal to the 
Graphics2D
exporter because it preserves 
100% of the initial document content and properties. There is no loss in document 
quality when exporting to XML because the resulting XML content can be loaded back 
into a 
JasperPrint
object that will look the same as the original one.
The built-in viewers can display documents exported in JRPXML format because they 
actually rely on the 
JRPrintXmlLoader
to load the document back into a 
JasperPrint 
object before rendering it on the screen.
E
MBEDDING
I
MAGES
When exporting XML, pay special attention to how images are stored. The two ways are 
as follows:
 If the exporter outputs to a file on disk, it stores the images contained by the source 
P
AGE
257
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
document in separate files that accompany the main JRPXML file. The image files 
are put in a directory that takes its name from the original destination file name 
plus the 
_files
suffix, the same directory as the JRPXML file.
 The exporter can embed images in the JRPXML file itself by encoding their binary 
data using a Base64 encoder. This simplifies transfer over the network or by direct 
output to streams.
To determine how to handle images, set the 
IS_EMBEDDING_IMAGES
exporter parameter, 
which expects a 
java.lang.Boolean
. By default, the images are embedded in the 
resulting XML.
O
VERRIDING
THE
DTD L
OCATION
For various reasons, you might need to handle the generated JRPXML content with 
special XML viewers or even browsers. To prevent these tools from complaining about 
not finding the public DTD mentioned in the header of the document when Internet 
access is not available, have your files point to a local DTD file instead of the public 
location previously mentioned in this guide. In such cases, use the 
DTD_LOCATION 
exporter parameter to override the default DTD location used by the exporter and point 
to the local DTD file.
HTML E
XPORTER
Among the first export formats supported by JasperReports was HTML. This is because 
HTML is a very popular document format and browsers are available on all platforms. 
Also, many Java applications requiring reporting functionality are web-based 
applications.
The 
net.sf.jasperreports.engine.export.JRHtmlExporter
tries to produce 
high-quality HTML output by using the most common tags to ensure that the documents 
are compatible with the great majority of browsers, and that they look almost the same 
on all platforms. It is a grid-based exporter because it structures the layout of each 
document page using a 
<table>
element, so all the limitations mentioned about grid 
exporters are applicable to this exporter, too (see the “Grid Exporters” section, earlier in 
this chapter).
Since JasperReports version 1.2.0, the built-in HTML exporter produces output that is 
compatible with the XHTML standard.
P
ERFECT
E
LEMENT
A
LIGNMENT
As previously mentioned, regardless of the output format, the JasperReports exporters try 
to produce documents that are as close as possible to their 
Graphics2D
representation. 
This is also true for HTML. In HTML, elements are placed inside 
<td>
tags, which are 
part of a 
<table>
component associated with each document page. In older browsers, to 
P
AGE
258
Documents you may be interested
Documents you may be interested