using System;
using System.Collections.Generic;
using System.IO;
using WindwardInterfaces.net.windward.api.csharp;
using WindwardReportsAPI.net.windward.api.csharp;
using net.windward.api.csharp;

namespace MyReport
{
	public class MyReport
	{
		/// 
		/// Normally you will copy the code in this method to your application code.
		/// 
		/// Unused.
		public static void Main(string[] args)
		{

			// Initialize the engine.
			Report.Init();

			// Read the template file.
			using (FileStream template = File.OpenRead(@"C:\test\Northwind_Products.docx"))
			{
				// Create the generated report file.
				using (FileStream output = File.Create(@"C:\test\Northwind_Products.pdf"))
				{
					// Pass the 2 streams to the object that will create a PDF report.
					// For other output types, you create a different object at this step.
					using (Report myReport = new ReportPdf(template, output))
					{

						// Read in the template and prepare it to merge the data
						myReport.ProcessSetup();

						// Place all variables in this map. We assign this map to all datasources.
						Dictionary mapVariables = new Dictionary();
						// Replace the specified values with the values you want each time you run the report.
						mapVariables.Add("product", "65");
						myReport.Parameters = mapVariables;

						IDictionary dataSources = new Dictionary();
						using (AdoDataSourceImpl MyDatasource_0 = new AdoDataSourceImpl("System.Data.SqlClient", @"Data Source=mssql.windwardreports.com;Initial Catalog=Northwind;User ID=demo;Password=demo")) {
							dataSources.Add("", MyDatasource_0);

							// Insert all data into the report.
							myReport.ProcessData(dataSources);
						}

						// Write the generated report to the PDF file.
						myReport.ProcessComplete();
					}
				}
			}
		}
	}
}



    
  
    
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map;
import net.windward.datasource.DataSourceProvider;
import net.windward.datasource.dataset.DataSetDataSource;
import net.windward.datasource.jdbc.JdbcDataSource;
import net.windward.datasource.odata.ODataDataSource;
import net.windward.datasource.xml.SaxonDataSource;
import net.windward.xmlreport.ProcessPdf;
import net.windward.xmlreport.ProcessReport;
import net.windward.xmlreport.ProcessReportAPI;
import net.windward.datasource.dom4j.Dom4jDataSource;
import net.windward.datasource.json.JsonDataSource;

public class MyReport {

	/**
	* Normally you will copy the code in this method to your application code.
	* @param args unused
	*/
	public static void main(String[] args) throws Exception {

		// Initialize the engine.
		ProcessReport.init();

		// Read the template file.
		FileInputStream template = new FileInputStream("C:\\test\\Northwind_Products.docx");

		// Create the generated report file.
		FileOutputStream reportStream = new FileOutputStream("C:\\test\\Northwind_Products.pdf");

		// Pass the 2 streams to the object that will create a PDF report.
		// For other output types, you create a different object at this step.
		ProcessReportAPI myReport = new ProcessPdf(template, reportStream);

		// Read in the template and prepare it to merge the data
		myReport.processSetup();

		// Place all variables in this map. We assign this map to all datasources.
		Map mapVariables = new HashMap();
		// Replace the specified values with the values you want each time you run the report.
		mapVariables.put("product", "65");
		myReport.setParameters(mapVariables);

		Map dataSources = new HashMap();
		// Mapping ADO (System.Data.SqlClient, Data Source=mssql.windwardreports.com;Initial Catalog=Northwind;User ID=demo;Password=demo) to JDBC - you may need to edit this.
		DataSourceProvider MyDatasource_0 = new JdbcDataSource("com.microsoft.sqlserver.jdbc.SQLServerDriver", "jdbc:sqlserver://mssql.windwardreports.com;DatabaseName=Northwind", "demo", "demo");
		dataSources.put("", MyDatasource_0);

		// Insert all data into the report.
		myReport.processData(dataSources);

		// You should place the following in a finally block (we did not to keep this clear).
		MyDatasource_0.close();

		// Write the generated report to the PDF file.
		myReport.processComplete();

		//ensure everything is written out to the stream
		template.close();
		reportStream.close();
	}
}



    
  
    
Imports System.IO
Imports WindwardInterfaces.net.windward.api.csharp
Imports WindwardReportsAPI.net.windward.api.csharp
Imports net.windward.api.csharp

Module Module1
    Sub Main()

    ' Initialize the engine
    Report.Init()

        ' Read the template file.
        Using template as FileStream = File.OpenRead("C:\test\Northwind_Products.docx")

            ' Create the generated report file.
            Using output as FileStream = File.Create("C:\test\Northwind_Products.pdf")
                
                ' Pass the 2 streams to the object that will create a PDF report.
                ' For other output types, you create a different object at this step.
                Using myReport as Report = new ReportPdf(template, output)

                    ' Read in the template and prepare it to merge the data
                    myReport.ProcessSetup()

                    ' Place all variables in this map. We assign this map to all datasources.
                    Dim mapVariables = New Dictionary(Of String, Object)
                    ' Replace the specified values with the values you want each time you run the report.
                    mapVariables.Add("product", "65")
                    myReport.Parameters = mapVariables

                    Dim dataSources As New Dictionary(Of String, IReportDataSource)
                    Using MyDatasource_0 = New AdoDataSourceImpl("System.Data.SqlClient", "Data Source=mssql.windwardreports.com;Initial Catalog=Northwind;User ID=demo;Password=demo")
                    dataSources.Add("", MyDatasource_0)
                    
                    ' Insert all data into the report.
                    myReport.ProcessData(dataSources)
                    End Using

                    ' Write the generated report to the PDF file.
                    myReport.ProcessComplete()

                End Using
            End Using
        End Using
    End Sub
End Module






    
  

Windward Core

Simple, Easy, and Seamless Integration

Start your FREE trial!

Windward Core is our flagship product, comprised of two components: Designer and Engine. Trusted by hundreds of companies globally for over 10 years, Core allows end-users to design stunning templates and output data-rich documents, reports, spreadsheets, and even slide decks. Whether you are an Enterprise, ISV or System Integrator, you’ll find Core easy to integrate with your new or existing software products.

Designer

Create Custom Documents with the Right Visuals Every Time.

We know it's disappointing spending countless hours designing a template only to have the final results fall short of expectations. Windward Designer offers free-form control over your templates, so stop accepting mediocre results and create your templates exactly the way you envision them. The only limit is your imagination!

The best part? Our Designer is an add-in to Microsoft Office (Word, Excel, & PowerPoint), and output to universal formats like HTML or PDF.

Learn more about Designer here.

Engine

Enjoy Simple, Easy, and Seamless Integration with Just a Few Lines of Code

In as little as 11 lines of code you can extend your new or existing applications with the ability to generate documents, eliminating the need to “reinvent the wheel” and allowing you to focus on building the Core features of you application.

Windward engine works beautifully with other platforms, including native code for JAVA & .NET. For all other languages it works seamlessly via our RESTful Web Service Engine (and works with microservice frameworks, too). The Engine can be deployed on existing servers along with other applications, or on a dedicated server to accommodate specific performance and security needs.

Start your FREE trial!

Core vs Hub

Not sure which solution is the best one for your team?
Learn more about our solutions in a Core vs Hub comparison

Capabilities

Datasources

Ready to merge your data with design? We make it as easy as possible, with nearly universal datasource support and seamless integration with just 11 lines of code. See all datasources here.

Programming Languages

It is possible to integrate Windward's solution into virtually any application regardless of language by using direct calls from the RESTful Engine. We make it as easy as possible to merge our solution with your application. See all languages here.

Output Formats

The Engine combines your Windward Designer templates with the data you need to create visually impressive data-powered documents in the most common document formats, 18 in total. See all output formats here.

Highlights

seamless integration

Seamless integration with minimal code

  • Insert your desired data tags to define your template's parameters, then execute a small bit of code to call the Windward Engine and merge your templates with your data.
  • You can call it from pretty much any language.
data filter

Small platform footprint inside existing application

  • With our 11 lines of code, we pack a punch without taking up too much room.
  • The common code between templates means that you can use the same code everywhere—simply alter the name of the template being generated to distinguish between outputs.
data powered documents

Visually stunning and data-powered document automation in popular document formats

  • Details matter, which is why you get pixel perfect output in your final document.
  • Build beautiful templates in Microsoft Office, then connect them to your data and tag out the dynamic elements.
  • Create just one template that looks the way you want and rest easy knowing that one template can support multiple output formats. Just specific which format you want when calling the Engine and enjoy the end result!
report generation

Generate documents in 1/10th of the time

  • Collaborate, edit, and revise all within the same platform to decrease time-consuming back-and-forth.
  • We measure the Windward Engine’s performance in pages per second, not seconds per page.

The Windward Family

If you need a complete document automation solution, our Windward Hub may be a better fit for your needs. If you are unsure which is better, please read our comparison of Core vs. Hub features.

Document Automation for high volume output and a familiar user-friendly design environment

Start your FREE trial!
Call us with questions at 1.303.499.2544

Contact

Got questions about reporting and document generation? We've got answers—let's connect!
Send a note
messaging, phone, or email contact optionsclose out button