free pdf viewer c# : Copying text from pdf to excel control application system azure web page .net console JasperReports-Ultimate-Guide-39-part1368

T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
There are three possible ways to use parameters in the query, described in the following 
subsections.
$P{paramName} Syntax
The parameters are used like normal 
java.sql.PreparedStatement
parameters, using 
the following syntax: 
<queryString>
<![CDATA[
SELECT * FROM Orders WHERE OrderID <= $P{MaxOrderID} ORDER BY 
ShipCountry
]]>
</queryString>
$P!{paramName} Syntax
Sometimes it is useful to use parameters to dynamically modify portions of the SQL 
query or to pass the entire SQL query as a parameter to the report-filling routines. In 
such cases, the syntax differs a little, as shown in the following example. Notice the 
character:
<queryString>
<![CDATA[
SELECT * FROM $P!{MyTable} ORDER BY $P!{OrderByClause}
]]>
</queryString>
What is different in this second example? Parameters are used for the missing table name 
in the 
FROM
clause and the missing column names in the 
ORDER BY
clause. Note that you 
cannot use normal 
IN
parameters to dynamically change portions of your query that you 
execute using a 
java.sql.PreparedStatement
object.
The special syntax that introduces the parameter values in this example ensures that the 
value supplied for those parameters replace the parameter references in the query, before 
it is sent to the database server using a 
java.sql.PreparedStatement
object.
In fact, the reporting engine first deals with the 
$P!{}
parameter references by using 
their values to obtain the final form of the SQL query, and only after that transforms the 
rest of the 
$P{}
normal parameter references into usual 
IN
parameters used when 
working with prepared JDBC statements.
For more details about what type of parameters to use in your report queries, you must be 
familiar with JDBC technology, especially the 
java.sql.PreparedStatement 
interface and its parameters.
This second type of parameter reference used in the SQL query allows you to pass the 
entire SQL query at runtime if you like:
P
AGE
79
Copying text from pdf to excel - 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 c#; find and replace text in pdf file
Copying text from pdf to excel - 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
extract highlighted text from pdf; copy text pdf
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
<queryString>$P!{MySQLQuery}</queryString>
Note
It is possible to put other parameter references into a parameter value. That is, when supplying the 
entire SQL query as a report parameter, that query can itself contain some other parameter references, and the 
program will expand them recursively.
$X{functionName, param1, param2,...} Syntax
There are also cases when a part of the query needs to be dynamically built starting from 
a report parameter value, with the query part containing both query text and bind 
parameters. This is the case, for instance, with 
IN
and 
NOT IN
query clauses that need to 
use a collection report parameter as a list of values.
Such complex query clauses are introduced into the query using the 
$X{}
syntax. The 
general form of a 
$X{}
clause is 
$X{functionName, param1, param2,...}
.
JasperReports has built-in support for two clause functions: 
IN
and 
NOTIN
. Both 
functions expect two parameters:
 The SQL column or expression to be used as the left side in the 
IN
/
NOT IN
clause.
 The name of the report parameter that will supply the values list. The value of this 
parameter can either be a 
java.util.Collection
instance or an object or 
primitive Java array.
For instance, if a report receives as a parameter a list of countries and needs to filter 
orders based on this list, you would write a query of the following form:
<parameter name="CountryList" class="java.util.List"/>
<queryString><![CDATA[
SELECT * FROM Orders WHERE $X{IN, ShipCountry, CountryList}
]]></queryString>
Before the query is executed, 
$X{IN, <column>, <param>}
and 
$X{NOTIN, 
<column>, <param>}
expand to the following:
<column> IN/NOT IN (?, ?, ..)
when the parameter value is neither null nor 
empty. Each component in the collection/array generates a bind parameter; the type 
of the bind parameters is decided based on the runtime value of the collection/array 
component.
 A 
true
clause (
0 = 0
) when the parameter value is null or empty.
New clause functions (in addition to the built-in 
IN
and 
NOTIN
) can be added by 
implementing 
net.sf.jasperreports.engine.query.JRClauseFunction
and by 
extending the query executer to register the new functions.
P
AGE
80
C# PDF copy, paste image Library: copy, paste, cut PDF images in
etc. High quality image can be saved after cutting, copying and pasting into PDF page in .NET console application. Guarantee high
extract text from pdf image; copy text from pdf with formatting
C# PDF File Permission Library: add, remove, update PDF file
PDF, VB.NET convert PDF to text, VB.NET Choose to offer PDF annotation and content extraction functions. Enable or disable copying and form filling functions.
copy text from pdf online; extract text from pdf to word
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
Some of the provided samples, such as 
jasper
subreport
scriptlet
, and 
query
use internal SQL queries to retrieve data. The most interesting sample illustrating this is 
in the 
query
sample found in the 
/demo/samples/query
directory of the project’s 
distribution.
S
TORED
P
ROCEDURES
In the majority of cases, the SQL query text placed inside a report template is a 
SELECT 
statement. JasperReports uses a 
java.sql.PreparedStatement
behind the scenes to 
execute that SQL query through JDBC and retrieve a 
java.sql.ResultSet
object to 
use for report filling. However, the SQL query string might also contain stored procedure 
calls. 
Certain conditions must be met to put stored procedure calls in the SQL query string of a 
report template:
 The stored procedure must return a 
java.sql.ResultSet
when called through 
JDBC.
 The stored procedure cannot have 
OUT
parameters.
These two conditions imply that the stored procedure can be called using a 
java.sql.PreparedStatement
and does not need to be called through a 
java.sql.CallableStatement
in order to work with JasperReports.
Q
UERY
E
XECUTER
API
Starting with JasperReports version 1.2.0, report data can be produced by specifying 
queries in languages other than SQL. Each query language is associated a query executer 
factory implementation. JasperReports has built-in query executer implementations for 
SQL, Hibernate 3, and XPath queries.
The query language is specified in JRXML using the 
language
attribute of the 
<queryString>
tag. Using the API, the query language is set by 
JRDesignQuery.setLanguage(String)
. The default language is SQL, thus ensuring 
backward compatibility for report queries that do not specify a query language.
To register a query executer factory for a query language, you have to define a 
JasperReports property named 
net.sf.jasperreports.query.executer.factory.<language>
(see 
“Configuration Files” on page 272 for details). The same mechanism can be used to 
override the built-in query executers for a query language, for instance to use a custom 
query executer for SQL queries.
The API for query executers involves an executer factory interface, a query executer 
interface, implementations of these interfaces, and 
JRDataSource
implementations.
P
AGE
81
VB.NET PDF copy, paste image library: copy, paste, cut PDF images
DNN (DotNetNuke), SharePoint. High quality image can be saved after cutting, copying and pasting into PDF page. Empower to cut, copy
copy highlighted text from pdf; copy paste text pdf file
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
NET application. Online C# source code for extracting, copying and pasting PDF pages in C#.NET console class. Support .NET WinForms
extract text from scanned pdf; extract text from pdf file
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
JRQueryExecuterFactory
is a factory interface used to query executers for a specific 
language and to provide information regarding the connection parameters required by the 
query executer to run the query. It has the following methods:
JRQueryExecuter createQueryExecuter(JRDataset dataset, Map 
parameters)
: This method creates a query executer. The dataset includes the 
query string and the fields that will be requested from the data source created by 
the query executer. The parameters map contains parameter types and runtime 
values to be used for query parameters. This method usually sends the dataset and 
parameters map to the created query executer.
Object[] getBuiltinParameters()
: This method returns parameters that will 
be automatically registered with a report/dataset based on the query language. 
These parameters will be used by query executers as the context/connection on 
which to execute the query. For instance, the Hibernate query executer factory 
specifies a 
HIBERNATE_SESSION
parameter of type 
org.hibernate.Session 
whose value will be used by the query executer to run the query.
boolean supportsQueryParameterType(String className)
: This method is 
used on report validation to determine whether a query parameter type (for a 
parameter specified in the query using 
$P{..}
) is supported by the query executer 
implementation.
JRQueryExecuter
is responsible for running a query, creating a data source out of the 
result, and closing the result. It includes these methods:
JRDataSource createDatasource()
: This method processes and runs the query 
and creates a data source out of the query result. Usually, the required data (query 
string and parameter values) is made available to the query executer by the factory 
on creation.
void close()
: This method closes the query execution result and any other 
resource associated with it. This method is called after all data produced by the 
query executer has been fetched.
boolean cancelQuery()
: This method is called when the user decides to cancel 
a report fill process. The implementation should check whether the query is 
currently being executed and ask the underlying mechanism to abort the execution. 
The method should return 
true
if the query was being executed and the execution 
was canceled. If execution abortion is not supported, the method will always return 
false
.
Query executer implementation can benefit from using 
JRAbstractQueryExecuter
as 
a base. The abstract base provides query parameter processing functionality and other 
utility methods.
In most cases, a query executer needs a new 
JRDataSource
implementation to wrap its 
specific query results. Still, in some of the cases, query executers can use existing 
JRDataSource
implementations.
P
AGE
82
VB.NET PDF File Permission Library: add, remove, update PDF file
rotate PDF pages, C#.NET search text in PDF Choose to offer PDF annotation and content extraction functions. Enable or disable copying and form filling functions
cut and paste text from pdf; export text from pdf to word
C# HTML5 PDF Viewer SDK to view, annotate, create and convert PDF
to protect PDF document from editing, printing, copying and commenting Such as Word, Excel, PowerPoint, Tiff, images and other C#.NET: Edit PDF Text in ASP.NET.
copy and paste text from pdf to excel; delete text from pdf
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
Note that registering new query executer implementations by adding properties in the 
jasperreports.properties
file, as mentioned above, is only one way of registering 
the executers. They can be registered in a more transparent way by using the 
JasperReports extension support. One ore more query executer implementations can be 
packaged in a query executer bundle that can be deployed as a single JAR file. This 
approach obviates the need to modify existing application files. The query executer 
extension point in JasperReports is represented by the 
net.sf.jasperreports.engine.query.QueryExecuterFactoryBundle
interface. 
You can find more details about creating JasperReports extensions in the Extensions 
Support section on page 280.
SQL Q
UERY
E
XECUTER
The SQL query executer is a JDBC-based executer for SQL queries. It replaces the 
mechanism used before the 1.2.0 release for executing report queries, preserving all its 
functionality.
The SQL query executer factory does not register any parameter as the 
REPORT_CONNECTION
parameter is kept in all reports for backward compatibility. The 
SQL query executer uses this parameter to retrieve a 
java.sql.Connection
object.
The query executer creates a 
JRResultSetDataSource
data source to wrap the JDBC 
result set.
Aborting the currently running query is supported using 
java.sql.PreparedStatement.cancel()
. The fetch size of the JDBC statement used 
by the query executer behind the scenes can be set using the 
net.sf.jasperreports.jdbc.fetch.size
configuration property at report level or 
globally.
XP
ATH
Q
UERY
E
XECUTER
The XPath query executer permits reports using XML data sources to specify the XPath 
that produces the list of nodes/records as the report query.
The query executer factory registers a parameter named 
XML_DATA_DOCUMENT
of type 
org.w3c.dom.Document
. The query executer will run the XPath query against this 
document and produce a 
JRXmlDataSource
data source.
Parameters are supported in the XPath query. All parameters will be replaced in the 
query string by their 
java.lang.String
values.
This query executer recognizes four additional parameters that serve for localization 
purposes when creating the 
JRXmlDataSource
instance:
JRXPathQueryExecuterFactory.XML_LOCALE
JRXPathQueryExecuterFactory.XML_NUMBER_PATTERN
JRXPathQueryExecuterFactory.XML_DATE_PATTERN
P
AGE
83
C# PDF Convert to Word SDK: Convert PDF to Word library in C#.net
Quick to remove watermark and save PDF text, image, table Password protected PDF file can be printed to Word C# source code is available for copying and using
extract text from pdf with formatting; copy and paste pdf text
C# PDF File & Page Process Library SDK for C#.net, ASP.NET, MVC
to tiff, VB.NET read PDF, VB.NET convert PDF to text, VB.NET RasterEdge XDoc.PDF allows you to easily move PDF document pages position Copying and Pasting Pages.
a pdf text extractor; delete text from pdf file
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
JRXPathQueryExecuterFactory.XML_TIME_ZONE
More details about how the built-in XPath data source works can be found in the “XML 
Data Sources” section, earlier in this chapter, and you can see this query executer being 
used in the 
/demo/samples/xmldatasource
sample provided with the project source 
files.
H
IBERNATE
Q
UERY
E
XECUTER
JasperReports includes support for Hibernate 3 in the form of a query executer. This 
allows users to specify in a report an HQL query that should be used to retrieve report 
data.
For reports having an HQL query, the executor factory will automatically define a 
parameter named 
HIBERNATE_SESSION
of type 
org.hibernate.Session
. Its value 
will be used by the query executor to create the query.
Query Parameters
Like SQL queries, HQL queries can embed two types of parameters:
 Query parameters are embedded using the 
$P{..}
syntax. These parameters are 
used as named parameters of the Hibernate query. The correspondence between 
Java parameter types and Hibernate types is resolved according to Table 8-1.
Table 8-1. Parameter Type Mapping
Parameter Type (Java)
Hibernate Type
java.lang.Boolean
boolean
java.lang.Byte
byte
java.lang.Double
double
java.lang.Float
float
java.lang.Integer
integer
java.lang.Long
long
java.lang.Short
short
java.math.BigDecimal
big_decimal
java.math.BigInteger
big_integer
java.lang.Character
character
java.lang.String
string
java.util.Date
date
java.sql.Timestamp
timestamp
java.sql.Time
time
java.util.Collections 
implementation
Multiple-value parameter; the type is guessed by Hibernate
P
AGE
84
VB.NET PDF File & Page Process Library SDK for vb.net, ASP.NET
including sorting pages and swapping two pages. PDF Pages Extraction, Copying and Pasting. By referring to this VB.NET guide, you
copy text from pdf reader; pdf text replace tool
.NET PDF SDK - Description of All PDF Processing Control Feastures
Create PDF from Word (docx, doc); Create PDF from Excel (xlsx, xls PDF page extraction, copying and pasting allow users to move PDF pages; PDF Text Process.
extracting text from pdf; cut and paste text from pdf document
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
Mapped entity class
Mapped persistent entity
Other
Guessed by Hibernate
 Statement substitution parameters are embedded using the 
$P!{..}
syntax. The 
java.lang.String
value of the parameter is substituted as-is in the query string 
before creating the Hibernate query.  This type of parameter can be used to 
dynamically specify query clauses/parts.
Query Execution
The result of a Hibernate query can be obtained in several ways. The Hibernate query 
executer chooses the way the query result will be produced based on a property named 
net.sf.jasperreports.hql.query.run.type
.
This property can be specified both globally as a JasperReports property (see 
”Configuration Files” on page 272) and as a property of the report/dataset (using the 
<property>
element in JRXML or the 
setProperty(String, String)
method). The 
report/dataset property value overrides the global value.
The run type can be one of the following:
list
: The result is fetched using 
org.hibernate.Query.list()
. The result 
rows can be fetched all at once or in fixed-sized chunks. To enable paginated result 
row retrieval, the 
net.sf.jasperreports.hql.query.list.page.size 
configuration property should have a positive value.
scroll
: The result is fetched using 
org.hibernate.Query.scroll()
.
iterate
: The result is fetched using 
org.hibernate.Query.iterate()
.
The fetch size of the query can be set using the 
net.sf.jasperreports.jdbc.fetch.size
configuration property at report level or 
globally.
However, when dealing with large amounts of data, using pagination is the most 
common way to present the document content. In this case, it is necessary to clear 
Hibernate’s first-level cache after each page fetching, otherwise Hibernate will 
eventually cause an 
OutOfMemory
error. If the Hibernate’s session cache is regularly 
cleared, the memory trap can be avoided. Because flushing data and clearing the cache is 
a time-consuming process, you should use it only if really huge datasets are involved.
This is why the 
net.sf.jasperreports.hql.clear.cache
property was introduced. 
Normally, it defaults to 
false
. If set to 
true
, the periodic Hibernate session cache 
cleanup is performed after each page fetching.
P
AGE
85
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
Field Mapping
A report/dataset field is mapped to a value from the Hibernate query result either by its 
description or its name. By default, the program uses the report field name, but the report 
field description property can be used instead if the 
net.sf.jasperreports.hql.field.mapping.descriptions
configuration 
property is set to 
true
either in the report template or globally.
The mappings are similar to the ones used by JavaBeans data sources (see the 
“JavaBeans Data Sources” section, earlier in this chapter), except that select aliases are 
used when queries return tuples instead of single objects.
The field mappings are resolved according to this scheme:
 If the query returns one object per row:
*If the object’s type is a Hibernate entity or component type, the field mappings 
are resolved as property names of the entity/component. If a select alias is 
present, it can be used to map a field to the whole entity/component object. 
Otherwise, the object type is considered scalar and only one field can be 
mapped to its value.
 If the query returns a tuple (object array) per row, then a field mapping can be one 
of:
*A select alias—the field will be mapped to the value corresponding to the alias.
*A property name prefixed by a select alias and a dot (
.
). The field will be 
mapped to the value of the property for the object corresponding to the alias. 
The type corresponding to the select alias has to be an entity or component 
type.
Field mappings do not yet support queries like 
select new list(..)
or 
select new 
map(..)
.
MDX Q
UERY
E
XECUTER
Reporting on OLAP data is supported in JasperReports via an MDX query executer and 
a data source that use the Mondrian API's (this is why often we refer to this query 
executer also as the Mondrian query executer). Users can create reports with MDX 
queries and map report fields onto the OLAP result; the engine will execute the query via 
Mondrian and pass the result to a data source implementation, which will be used to fill 
the report.
The Mondrian query executer is registered by default for queries having 
MDX
or 
mdx
as 
the language specified in the report template. You can use JasperReports configuration 
properties to register additional or alternative query language to query executer mappings 
(see the “Query Executer API” section earlier in this chapter).
P
AGE
86
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
Connection Parameter
The Mondrian query executer requires a single connection parameter named 
MONDRIAN_CONNECTION
of type 
mondrian.olap.Connection
.
When filling reports with MDX queries, the caller is required to supply a valid Mondrian 
connection to be used for executing the query. The connection can be obtained as 
follows:
mondrian.olap.Connection connection = ...;
parameters.put(
JRMondrianQueryExecuterFactory.PARAMETER_MONDRIAN_CONNECTION,
connection
);
JasperPrint print = JasperFillManager.fillReport(report, 
parameters);
Query Parameters
MDX queries can contain placeholders for parameters of any type. When the query gets 
executed, each parameter placeholder will be replaced in the query string by its 
toString()
value. Therefore, for MDX queries, 
$P{...}
parameters are equivalent to 
$P!{...}
query fragments.
Data Source
The Mondrian query executer passes the query result to a Mondrian data source, which 
will be used to iterate the result and map values from the result to the report fields.
The field mapping deals with mapping values from the OLAP result to the report fields. 
As an OLAP result has a multidimensional and hierarchical structure while a 
JasperReports data source has a tabular structure, mapping values to fields is not a trivial 
task.
A special syntax is used to specify what value should be mapped to a field. The field 
description is used to hold the mapping specification.
Using the mapping syntax, one can map two types of values from the OLAP result:
 Member values are names or properties of members of the result axes.
 Data/measure values are cell values from the result.
The Mondrian data source performs a traversal of the OLAP result by iterating the 
members of the result axes. On every step, each field is checked for whether its mapping 
matches the current position in the OLAP result. If so, the value is extracted from the 
result and set to the field.
A member mapping matches members on an axis specified either by name or index. 
Each element on an axis is a tuple. To match a single member in a tuple, an index or 
P
AGE
87
T
HE
J
ASPER
R
EPORTS
U
LTIMATE
G
UIDE
dimension name is used. If a level is specified either by depth or level name, then the 
specified level member is matched.
The member level can be used to map members that are parents of the current member in 
the dimension hierarchy. The fields, which are mapped to higher-level members, can 
then be used for grouping. For example, if the result cube has members of the 
Store 
dimension on the 
Rows
axis, you can map 
Rows[Store][Store Country]
to a country 
field and 
Rows[Store][Store City]
to a city field, and use the country field to create 
a report group.
A member mapping yields the following value:
 If a property is specified, then the property value is retrieved from the member.
 Otherwise:
*If a level is specified, then the value is the name of the member 
(
mondrian.olap.Member.getName()
).
*Otherwise, the value is the member itself (
mondrian.olap.Member
instance).
Following are some member mapping examples:
Rows[Store][Store State]
: Yields the 
Store State
name of the 
Store 
dimension member on the 
Rows
axis of the result.
Rows[Store][Store Name](Store Manager)
: Yields the 
Store Manager 
property of the 
Store Name
level of the 
Store
dimension member on the 
Rows 
axis.
A data mapping matches data cells corresponding to a member-level filter and fixed axis 
positions. 
A member-level filter consists of several member-level specifications. The data mapping 
matches the current axis members only if for each filter entry the level of the 
corresponding axis member is the same as the filter level. If a member level for an 
axis/dimension is not present in the filter, the data mapping will match any member for 
the axis/dimension.
The member filter can be used to map data values aggregated at higher levels and use 
these values as totals instead of variables calculated by the JasperReports engine. For 
example, you can map a field to 
Data(Rows[Store][Store Country])
to get the 
aggregated country total and another field to 
Data(Rows[Store][Store City])
to get 
the city total.
Fixed positions on an axis can be specified for a data mapping. This means that the 
entries on that axis will not be iterated, but the fixed value will be used when retrieving 
the data cell for the data mapping. The positions correspond to the axes, and if there is no 
fixed position for an axis, 
?
should be used. For instance, 
[?, 1, ?]
corresponds to the 
second entry on the 
Rows
axis and the current (iterated) positions on the 
Columns
and 
Pages
axes.
P
AGE
88
Documents you may be interested
Documents you may be interested