WindwardReports Utility Reference

The WindwardReports.jar file that is part of the Java Report Engine installation includes some useful utilities.

CheckJdbc# checks what JDBC parameters to use when connecting to a database. Parameters are:

  • jdbc_classpath - the classpath for the JDBC driver. Examples are:
    • SQL Server:
    • Oracle: oracle.jdbc.driver.OracleDriver
  • database_name - the connection string used to connect to a specific database. Examples are:
    • SQL Server:
    • Oracle: jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=database_name
  • username [optional] - The username used when connecting to the database
  • password [optional] - The password used when connecting to the database


JoinReports.joinPdf() combines output from multiple Report Templates into a single PDF document.

This operates differently from importing multiple templates into a master DOCX or XLSX template.

When you use the Import Tag, the imported template is converted into an element in the master template. For example, importing an XLSX file into a DOCX file converts the worksheets into Word tables. A Word table does not have the concept of hidden rows/columns, etc. and so that meta information is lost.

JoinReports keeps each document in its native template format. Each is then output to PDF and the PDF pages are then joined together in a single PDF document. This way you can combine DOCX and XLSX templates and both render their PDF pages as they would directly.

The API is passed an array of ProcessReport objects (and an OutputStream for the generated PDF report). If you are combining a number of static documents this is overkill and requires a couple of additional lines of code. However, if you want to build up distinct reports, applying data to templates, then combine those generated reports, this supports that use case.

ListServers# (no parameters) will list out all Windward servers running on the network listing their version number, IP address, and server name (repeating the IP address if it has no name).

OutTagFormat# is a quick way to find what format a <wr:out …/> tag will generate for a given string, type and pattern attributes. It also displays the output generated both by Windward Reports and the underlying Java classes. Both are displayed because some Java implementations differ in their formatted output, and this is something Windward Reports cannot control.


Generate output from a Report Template. This is a sample program that generates output from the command line. An example is:

java net.windward.xmlreport.RunReport InternetMarketingReport.docx testreport.pdf -xml:INTMARKETING InternetMarketingData.xml


RunReport template_file output_file [-basedir path] [-xml xml_file | -sql connection_string | -oracle connection_string | -ole oledb_connection_string] [licenseKey=value | ...]
The template file can be a docx, pptx, or xlsx file.
The output file extension determines the report type created:
output.csv - SpreadSheet CSV file
output.docx - Word 2007+ DOCX file
output.htm - HTML file with no CSS
output.html - HTML file with CSS
output.pdf - Acrobat PDF file
output.pptx - PowerPoint 2007+ PPTX file
output.prn - Printer where "output" is the printer name
output.rtf - Rich Text Format file
output.txt - Ascii text file
output.xhtml - XHTML file with CSS
output.xlsx - Excel 2007+ XLSX file
output.xlsm - Excel 2007+ macro enabled XLSM file
-basedir c:\test - sets the datasource base directory to the specified folder (c:\test in this example)
-data filename.xml - will write data.xml to this filename.
-embed - will embed data.xml in the generated report. DOCX, PDF, PPTX, & XLSX only.
-launch - will launch the report when complete.
-performance:123 - will run the report 123 times.
output file is used for directory and extension for reports
-cache - will cache template & datasources, will write output to memory stream. Only used with -performance
-threads:4 - will create 4 threads when running -performance.
-verify:N - turn on the error handling and verify feature where N is a number: 0 (none) , 1 (track errors), 2 (verify), 3 (all). The list of issues is printed to the standard error.
-version=9 - sets the template to the passed version (9 in this example)
encoding=UTF-8 (or other) - set BEFORE datasource to specify an encoding
locale=en_US - set the locale passed to the engine.
pod=pod_filename - set a POD file (datasets)
username=user password=pass - set BEFORE datasource for database connections
The datasource is identified with a pair of parameters
-cache connection_string - ex: //SERVER:PORT/DbName
-db2 connection_string - ex: //localhost:50000/SAMPLE
-excel connection_string - ex: Driver={Microsoft Excel Driver (*.xls)};DBQ=c:\testData.xls
-oracle connection_string - ex: @//localhost:1521/ORCL
-mysql connection_string - ex: //localhost/sakila
-sql connection_string - ex: //localhost:1433;DatabaseName=Northwind
-postgresql connection_string - ex: //localhost/pagila
-json filename - passes a JSON file as the datasource
filename can be a url/filename or a connection string
-odata url - passes a url as the datasource accessing it using the OData protocol
-sforce - password should be password+securitytoken
-xml filename - passes an xml file as the datasource
-xml xmlFilename=schema:schemaFilename - passes an xml file and a schema file as the datasource
filename can be a filename or a connection string
-dom4j filename - passes an xml file as the datasource. Uses XPath 1.0 (dom4J)
-dom4j xmlFilename=schema:schemaFilename - passes an xml file and a schema file as the datasource
filename can be a filename or a connection string
-[xml|sql|...]:name names this datasource with name
must come BEFORE each -xml, -sql, ... part
You can have 0-N key=value pairs that are passed to the datasource Map property
If the value starts with I', F', or D' it parses it as an integer, float, or date(yyyy-MM-ddThh:mm:ss)
example date="D'1996-08-29"
If the value is * it will set a filter of all
If the value is \"text,text,...\" it will set a filter of all

ShowFonts# will display all fonts Java is aware of on your system. Run this and if it throws an exception, then there is a bug in the Java font layout code and there is no way Windward can do a work around. The source code to this class is in WindwardReports.jar.

This class makes no calls to Windward. If this program cannot run, then it is a Java bug, not a Windward bug


net.windward.util.UUEncode will uuencode a file. This is useful for uuencoding bitmap files that will be placed directly in an XML file. To create a uuencoded file, run the program as “java net.windward.util.UUEncode image.jpg image.uue”

  • image.jpg - the binary file to uuencode.
  • image.uue - the created file that is a uuencode of the binary file.

XMLPerf# will read in an XML file and evaluate an XPath search. It lists the time and memory footprint both before and after to give a measure of how fast dom4j can handle files of a given size and complexity.