Convert HTML to PDF in your WinRT Applications
Winnovative HTML to PDF Converter Library for WinRT can be integrated
in any Windows Store application to convert URLs, HTML strings and streams to a PDF document, to a raster image or to a SVG vector image.
The converter offers full support for HTML tags, HTML5 with CSS3, SVG and Web Fonts, page breaks control, media type rules,
repeating HTML table header and footer, hierarchical bookmarks, tables of contents, fillable PDF forms,
HTML with page numbering in header and footer.
The library was designed and tested to work reliably in multithreaded environments
and to completely release all the resources used during conversion after each conversion.
This makes it suitable for usage in applications running a long period of time without interruption.
The software package you can download from our website contains demo applications to convert URLs and HTML strings
to PDF.
The licensing model is simple and you can purchase a license online. A purchased license never expires, is royalties free and it includes
free technical support and software update for 1 year from purchase date.
Software Download
Winnovative HTML to PDF Converter for WinRT is distributed in a Zip archive. You can follow the link below to download the software.
The Zip archive contains the portable client library for .NET, the HTML to PDF Server for Windows and for Azure and demo applications for
Windows and Windows Phone.
Software Installation
In order to use the Winnovative HTML to PDF Converter for WinRT and Windows Phone you first have to install the Winnovative HTML to PDF Server.
The server was built on .NET library to extend its capabilities to other platforms and languages.
The portable client library that you link in your Windows and Windows Phone applications will connect to the server to convert HTML to PDF, to Image or to SVG.
Winnovative HTML to PDF Converter Server can run either in a Windows Service on a Windows machine or in an Azure Cloud Service deployed
in Microsoft Azure cloud. You can find detailed installation and uninstallation instructions in the Readme.txt file
from the root of the downloaded package.
WinRT Code Sample
The Winnovative HTML to PDF Converter for WinRT API allows you to convert a HTML document to PDF in just a few lines a code. The programming interface is
also very rich and allows you customize the generated PDF document in various ways. The code below is copied from the demo for
HTML to PDF Converter that you can find the in the Demo folder of the software Zip package.
private async void buttonConvertUrlToPdf_Click(object sender, RoutedEventArgs e)
{
// If another conversion is in progress then ignore current request
bool ignoreRequest = false;
lock(pendingConversionSync)
{
if (pendingConversion)
ignoreRequest = true;
else
{
msgUrlToPdfInProgress.Visibility = Windows.UI.Xaml.Visibility.Visible;
pendingConversion = true;
}
}
if (ignoreRequest)
return;
try
{
String serverIP = textBoxServerIP.Text;
uint port = uint.Parse(textBoxServerPort.Text);
HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter(serverIP, port);
// set license key
htmlToPdfConverter.LicenseKey = "cP7v/+7/7//u7fHv/+zu8e7t8ebm5ub/7Q==";
// set service password if necessary
if (textBoxServicePassword.Text.Length > 0)
htmlToPdfConverter.ServicePassword = textBoxServicePassword.Text;
// set HTML viewer width
htmlToPdfConverter.HtmlViewerWidth = int.Parse(textBoxHtmlViewerWidth.Text);
// set HTML viewer height if necessary
if (textBoxHtmlViewerHeight.Text.Length > 0)
htmlToPdfConverter.HtmlViewerHeight = int.Parse(textBoxHtmlViewerHeight.Text);
// set navigation timeout
htmlToPdfConverter.NavigationTimeout = int.Parse(textBoxHtmlViewerWidth.Text);
// set conversion delay if necessary
if (textBoxConversionDelay.Text.Length > 0)
htmlToPdfConverter.ConversionDelay = int.Parse(textBoxConversionDelay.Text);
// set PDF page size
htmlToPdfConverter.PdfDocumentOptions.PdfPageSize = SelectedPdfPageSize();
// set PDF page orientation
htmlToPdfConverter.PdfDocumentOptions.PdfPageOrientation = SelectedPdfPageOrientation();
// set margins
htmlToPdfConverter.PdfDocumentOptions.LeftMargin = int.Parse(textBoxLeftMargin.Text);
htmlToPdfConverter.PdfDocumentOptions.RightMargin = int.Parse(textBoxRightMargin.Text);
htmlToPdfConverter.PdfDocumentOptions.TopMargin = int.Parse(textBoxTopMargin.Text);
htmlToPdfConverter.PdfDocumentOptions.BottomMargin = int.Parse(textBoxBottomMargin.Text);
// add header
if (checkBoxAddHeader.IsChecked != null && (bool)checkBoxAddHeader.IsChecked)
{
htmlToPdfConverter.PdfDocumentOptions.ShowHeader = true;
DrawHeader(htmlToPdfConverter, true);
}
// add footer
if (checkBoxAddFooter.IsChecked != null && (bool)checkBoxAddFooter.IsChecked)
{
htmlToPdfConverter.PdfDocumentOptions.ShowFooter = true;
DrawFooter(htmlToPdfConverter, true, true);
}
string urlToConvert = textBoxUrl.Text;
string errorMessage = null;
// Convert the HTML page from give URL to PDF in a buffer
byte[] pdfBytes = await Task.Run<byte[]>(() =>
{
byte[] resultBytes = null;
try
{
resultBytes = htmlToPdfConverter.ConvertUrl(urlToConvert);
}
catch (Exception ex)
{
errorMessage = String.Format("Conversion failed. {0}", ex.Message);
return null;
}
return resultBytes;
});
if (pdfBytes == null)
{
MessageDialog errorMessageDialog = new MessageDialog(errorMessage, "Conversion failed");
await errorMessageDialog.ShowAsync();
return;
}
// Save the PDF in a file
Windows.Storage.StorageFolder installedLocation = Windows.Storage.ApplicationData.Current.LocalFolder;
StorageFile outStorageFile = installedLocation.CreateFileAsync("WnvHtmlToPdf.pdf", CreationCollisionOption.ReplaceExisting).AsTask().Result;
FileIO.WriteBytesAsync(outStorageFile, pdfBytes).AsTask().Wait();
// Open the file in a PDF viewer
await Windows.System.Launcher.LaunchFileAsync(outStorageFile);
}
finally
{
lock (pendingConversionSync)
{
msgUrlToPdfInProgress.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
pendingConversion = false;
}
}
}