Note: To be able to use the samples you must install novaPDF SDK
as samples work only with it. Download it here: nova PDF SDK.
Hello World (ASP.NET PDF generator) sample is a simple ASP application that generates one PDF file containing the text "novaPDF says Hello World from ASP.NET". The PDF is created using the novaPDF printer driver and is saved in the “upload” folder. It demonstrates the basic use of the INovaPDFOptions interface. The printing job is done using the package System.Drawing.Printing
What this sample does:
- determines the active profile, makes a copy of it and names it "Test ASP.NET"
- sets the new profile (Test ASP.NET) as active as well as some mandatory settings
- generates a test PDF file and saves it in the “upload” folder
- restores the original settings of the novaPDF printer driver.
Note
To test this sample on IIS, you should set the Application Pool to run under the “Local System” Account. Here’s how you can do this:
- In IIS Manager, expand Local computer, the Application Pools folder, right-click the application pool you would like to configure (the one selected for this application/ virtual directory) and click Properties.
- Go to the Identity tab.
- Click on Predefined and in the list box beside it click Local System.
- Click OK.
Source code for the ASP sample output display page (Default.aspx):
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Hello World ASP.NET</title>
</head>
<body>
<h1>Hello World ASP.NET and novaPDF SDK</h1>
<form id="form2" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Press the button"></asp:Label>
<br />
<asp:LinkButton ID="Link1" Visible="false" runat="server">View folder.
</asp:LinkButton>
<br />
<asp:Button ID="Button1" runat="server" onclick="Button1_Click"
Text="Print to novaPDF" /><br />
<br />
1. In IIS Manager, expand the local computer, expand the Application Pools folder,
right-click the application pool you would like to configure
(the one selected for this application/ virtual directory), and click Properties.
<br />
2. Click the Identity tab.
<br />
3. Click Predefined, and in the list box beside it, click Local System.
<br />
4. Click OK.
</div>
</form>
</body>
</html>
Source code for the ASP sample (Default.aspx.cs):
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
using System.Drawing.Printing;
// the novapiLib package must be added as a COM reference
using novapiLib;
using System.Diagnostics;
public partial class _Default : System.Web.UI.Page
{
public static string PRINTER_NAME = "<%SDK_SAMPLE_PRINTER%>";
public static string NOVAPDF_INFO_SUBJECT = "Document Subject";
public static uint NV_PROFILE_EXISTS = 0xD5DA0006;
public static string PROFILE_NAME = "Test ASP.NET";
public static int PROFILE_IS_PUBLIC = 0;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
try
{
// create the NovaPdfOptions object
NovaPdfOptions pNova = new NovaPdfOptions();
// initialize the NovaPdfOptions object
// if you have an application license for novaPDF SDK,
// pass both the registration name and the license key to
//the Initialize() function
// pNova.Initialize(PRINTER_NAME, "<registration name>",
//"<license key>", "<application name>");
pNova.InitializeSilent(PRINTER_NAME, "", "", "");
// get the active profile ...
string activeProfile;
int nActivePublic;
pNova.GetActiveProfile(out activeProfile, out nActivePublic);
try
{
// and make a copy of it
pNova.CopyProfile(activeProfile, PROFILE_NAME, PROFILE_IS_PUBLIC);
}
catch (System.Runtime.InteropServices.COMException come)
{
// ignore profile exists error
if (NV_PROFILE_EXISTS == (uint)come.ErrorCode)
{
System.Console.WriteLine("Profile Test ASP.NET already exists");
}
else
{
// more serious error, propagate it
throw come;
}
}
// set the copy profile as active profile ...
pNova.SetActiveProfile(PROFILE_NAME, PROFILE_IS_PUBLIC);
// and set some options
pNova.SetOptionString(NOVAPDF_INFO_SUBJECT, "ASP.NET Hello document",
PROFILE_NAME, PROFILE_IS_PUBLIC);
pNova.SetOptionString("Save File", "novaPDFDocument", PROFILE_NAME,
PROFILE_IS_PUBLIC);
pNova.SetOptionString("Save Folder", Server.MapPath("upload/"),
PROFILE_NAME, PROFILE_IS_PUBLIC);
pNova.SetOptionString("File Conflict Strategy", "3", PROFILE_NAME,
PROFILE_IS_PUBLIC);
pNova.SetOptionString("Post Save Open", "0", PROFILE_NAME,
PROFILE_IS_PUBLIC);
pNova.SetOptionString("Prompt Save Dialog", "0", PROFILE_NAME,
PROFILE_IS_PUBLIC);
// print a test page, using the previously set
//active profile settings
using (PrintDocument pd = new PrintDocument())
{
pd.PrintController = new StandardPrintController();
pd.PrinterSettings.PrinterName = PRINTER_NAME;
pd.PrintPage += new PrintPageEventHandler(PrintPageFunction);
pd.Print();
}
pNova.SetActiveProfile(activeProfile, nActivePublic);
try
{
pNova.DeleteProfile(PROFILE_NAME, PROFILE_IS_PUBLIC);
}
catch
{
}
Label1.Text = "Success.<br />You will find the new printed
file in \"/upload\" folder.";
Button1.Visible = false;
Link1.Visible = true;
Link1.Attributes.Add("href", "upload/");
Link1.Attributes.Add("target", "_blank");
}
catch (System.Runtime.InteropServices.COMException come)
{
Label1.Style.Add("color", "red");
Label1.Text = "COM Exception:" + come.Message;
}
catch (Exception ee)
{
Label1.Style.Add("color", "red");
Label1.Text = "Exception: " + ee.Message;
return;
}
}
// and finally the function that actually prints the page
private static void PrintPageFunction(object sender, PrintPageEventArgs ev)
{
string str = "novaPDF says Hello World from ASP.NET";
Font font = new Font("Arial", 16);
Brush brush = new SolidBrush(Color.Black);
ev.Graphics.DrawString(str, font, brush, 20.0f, 20.0f);
ev.HasMorePages = false;
}
}