IRONSOFTWAREHOME
MIGRATION GUIDES

How to Migrate from PDFPrinting.NET to IronPDF in C#

Curtis Chau
Curtis Chau
Updated: August 1, 2026

Migrating from PDFPrinting.NET to IronPDF expands your PDF capabilities from a printing-only library to a comprehensive solution that handles the complete PDF lifecycle including creation, manipulation, extraction, security, and printing. This guide provides a complete, step-by-step migration path that preserves your existing printing workflows while adding PDF generation, HTML conversion, and cross-platform support capabilities.

Why Migrate from PDFPrinting.NET to IronPDF

Understanding PDFPrinting.NET

PDFPrinting.NET (Terminalworks; NuGet PdfPrintingNet) is a specialized library focused on silent PDF printing within Windows environments. As a dedicated tool focused on the silent printing of existing PDFs, it simplifies the task of dispatching documents to a printer programmatically without user intervention. The newer entry point is the PdfPrint class; older code may still reference the legacy TerminalWorks.PDFPrinting.PDFPrinter.

A core strength is silent printing - bypassing the usual print dialogue windows so fully automated workflows can run unattended.

The Printing-Centric Limitation

PDFPrinting.NET concentrates on a narrow set of operations and does not author new PDF content. Its scope is print, view, basic edit, and rasterize existing documents:

  1. Print-centric: Authors no new PDF content - only prints, views, edits, and rasterizes pre-existing PDFs.
  2. Windows-only printing: Tied to the Windows printing infrastructure, which limits cross-platform usability.
  3. No HTML/URL-to-PDF API: There is no HtmlToPdfConverter and no WebPageToPdfConverter class - these features do not exist in the API surface.
  4. Limited manipulation: Basic merge/split/extract is available via PdfPrintDocument; there is no watermarking or modern content authoring.
  5. No comprehensive text extraction surface.
  6. No form filling or flattening.

PDFPrinting.NET vs IronPDF Comparison

FeaturePDFPrinting.NETIronPDF
Primary FunctionalitySilent PDF printingFull cycle handling (create, edit, print)
Platform SupportWindows onlyCross-platform
PDF Creation/Manipulation CapabilityNoYes
HTML-to-PDF ConversionNoYes
Suitability for Automated WorkflowsHighHigh
Additional DependenciesRelies on Windows printersInternal browser engine for rendering
Silent PrintingYesYes
Text ExtractionNot supportedSupported
LicensingCommercialCommercial

IronPDF presents a more comprehensive solution by addressing the complete lifecycle of PDF handling. It facilitates the creation, editing, conversion, and printing of PDF documents, offering developers a full suite of features through a unified API. Unlike PDFPrinting.NET, IronPDF can be deployed across different platforms, making it a versatile choice for applications that operate in diverse environments.

For teams on modern .NET, IronPDF provides a complete PDF solution that works across Windows, Linux, and macOS environments.


Before You Start

Prerequisites

  1. .NET Environment: .NET Framework 4.6.2+ or .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGet Access: Ability to install NuGet packages
  3. IronPDF License: Obtain your license key from ironpdf.com

NuGet Package Changes

# Remove PDFPrinting.NET (the actual NuGet ID is PdfPrintingNet)
dotnet remove package PdfPrintingNet

# Install IronPDF
dotnet add package IronPdf
SHELL

License Configuration

// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

Identify PDFPrinting.NET Usage

# Find PDFPrinting.NET usage (newer + legacy namespaces)
grep -rE "PdfPrintingNet|TerminalWorks\.PDFPrinting|PdfPrint\b|PdfPrintDocument|PDFPrinter" --include="*.cs" .

# Find print-related code
grep -r "\.Print(\|PrinterName\|GetPrintDocument" --include="*.cs" .
SHELL

Complete API Reference

Namespace Changes

// Before: PDFPrinting.NET
// Newer API:
using PdfPrintingNet;
// Older code may use:
using TerminalWorks.PDFPrinting;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Printing;

Core Class Mappings

PDFPrinting.NETIronPDF
PdfPrint (newer) / PDFPrinter (legacy)PdfDocument + Print()
PdfPrintDocumentPdfDocument
(no HTML-to-PDF class exists)ChromePdfRenderer.RenderHtmlAsPdf
(no URL-to-PDF class exists)ChromePdfRenderer.RenderUrlAsPdf
Print settings propertiesPrintSettings

Printing Method Mappings

PDFPrinting.NETIronPDF
pdfPrint.Print(filePath)pdf.Print()
pdfPrint.PrinterName = "..."; pdfPrint.Print(path)pdf.Print(printerName)
new PdfPrintDocument(...)pdf.GetPrintDocument()
pdfPrint.Copies = nprintSettings.NumberOfCopies = n
pdfPrint.Duplex = trueprintSettings.DuplexMode = Duplex.Vertical
pdfPrint.Collate = trueprintSettings.Collate = true

New Features Not Available in PDFPrinting.NET

IronPDF FeatureDescription
renderer.RenderHtmlAsPdf(html)HTML to PDF conversion
renderer.RenderUrlAsPdf(url)URL to PDF conversion
PdfDocument.Merge(pdfs)Merge multiple PDFs
pdf.ApplyWatermark(html)Add watermarks
pdf.SecuritySettings.UserPasswordPassword protection
pdf.ExtractAllText()Text extraction

Code Migration Examples

Example 1: HTML to PDF Conversion

Before (PDFPrinting.NET): PDFPrinting.NET has no HTML-to-PDF API - there is no HtmlToPdfConverter class. The closest workflow is to generate the PDF with another library and then print or hand off the file:

// NuGet: Install-Package PdfPrintingNet
using PdfPrintingNet;
using System;

class Program
{
    static void Main()
    {
        // Step 1: Produce the PDF with another library (PDFPrinting.NET cannot).
        // Step 2: Print the existing PDF file.
        var pdfPrint = new PdfPrint("license-owner", "license-key");
        var status = pdfPrint.Print("output.pdf");
        Console.WriteLine($"Printed: {status}");
    }
}

After (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        var renderer = new ChromePdfRenderer();
        string html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF created successfully");
    }
}

Because PDFPrinting.NET cannot author PDFs at all, the migration is not a one-for-one class swap - it's adopting a new capability. IronPDF's ChromePdfRenderer.RenderHtmlAsPdf() returns a PdfDocument you can manipulate (watermarks, merging, security) before saving with SaveAs(). By leveraging a Chromium-based engine, IronPDF replicates modern CSS and JavaScript rendering with high fidelity. See the HTML to PDF documentation for comprehensive examples.

Example 2: URL to PDF Conversion

Before (PDFPrinting.NET): There is no WebPageToPdfConverter class - PDFPrinting.NET does not download or render web pages. A separate library must capture the URL as PDF first; PDFPrinting.NET can then print the resulting file:

// NuGet: Install-Package PdfPrintingNet
using PdfPrintingNet;
using System;

class Program
{
    static void Main()
    {
        // Step 1: Capture the URL with another library (PDFPrinting.NET cannot).
        // Step 2: Print the resulting PDF.
        var pdfPrint = new PdfPrint("license-owner", "license-key");
        var status = pdfPrint.Print("webpage.pdf");
        Console.WriteLine($"Printed: {status}");
    }
}

After (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        var renderer = new ChromePdfRenderer();
        string url = "https://www.example.com";
        var pdf = renderer.RenderUrlAsPdf(url);
        pdf.SaveAs("webpage.pdf");
        Console.WriteLine("PDF from URL created successfully");
    }
}

IronPDF uses a single ChromePdfRenderer class for both HTML strings and URLs, with RenderUrlAsPdf() handling the web capture in one call. Learn more in our tutorials.

Example 3: Headers and Footers

Before (PDFPrinting.NET): PDFPrinting.NET cannot author headers or footers - it does not generate PDFs from HTML or any other source, and offers no header/footer composition API. If your PDF already contains them, the library can print it:

// NuGet: Install-Package PdfPrintingNet
using PdfPrintingNet;
using System;

class Program
{
    static void Main()
    {
        // Headers/footers must already be baked into the PDF.
        var pdfPrint = new PdfPrint("license-owner", "license-key");
        pdfPrint.Print("report.pdf");
        Console.WriteLine("PDF with pre-existing headers/footers printed");
    }
}

After (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Company Report</div>"
        };
        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>"
        };
        string html = "<html><body><h1>Document Content</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("report.pdf");
        Console.WriteLine("PDF with headers/footers created");
    }
}

IronPDF uses HtmlHeaderFooter objects with an HtmlFragment property that accepts full HTML, allowing rich styling with CSS. Placeholders such as {page} and {total-pages} are substituted at render time.


Critical Migration Notes

Header/Footer Placeholders Are an IronPDF-Only Feature

PDFPrinting.NET has no header or footer authoring API at all, so there is no placeholder syntax to migrate from. IronPDF supports {page} and {total-pages} placeholders inside HtmlHeaderFooter.HtmlFragment:

// IronPDF placeholders
"Page {page} of {total-pages}"

Load-Then-Print Pattern

PDFPrinting.NET passes file paths directly to Print(); IronPDF loads the document first:

// PDFPrinting.NET: Direct path to Print()
pdfPrint.Print("document.pdf");

// IronPDF: Load first, then operate
var pdf = PdfDocument.FromFile("document.pdf");
pdf.Print();

PDFPrinting.NET uses properties on PdfPrint; IronPDF uses a settings object:

// PDFPrinting.NET: Properties on PdfPrint
pdfPrint.Copies = 2;
pdfPrint.Duplex = true;

// IronPDF: Settings object
var settings = new PrintSettings
{
    NumberOfCopies = 2,
    DuplexMode = System.Drawing.Printing.Duplex.Vertical
};
pdf.Print(settings);

New Capabilities After Migration

After migrating to IronPDF, you gain capabilities that PDFPrinting.NET cannot provide:

PDF Merging

var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");

Watermarks

pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");

Password Protection

pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";

Text Extraction

string text = pdf.ExtractAllText();

Generate-Then-Print Workflow

With IronPDF, you can generate PDFs and print them in one workflow:

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Invoice</h1>");
pdf.Print("Invoice Printer");

Cross-Platform Printing

PDFPrinting.NET is Windows-only. IronPDF works cross-platform:

Windows

pdf.Print("HP LaserJet");

Linux

// Requires CUPS (Common Unix Printing System)
// Install: apt-get install cups
pdf.Print("HP_LaserJet");  // CUPS uses underscores instead of spaces

macOS

pdf.Print("HP LaserJet");

Feature Comparison Summary

FeaturePDFPrinting.NETIronPDF
Silent Printing
Print Settings
HTML to PDF
URL to PDF
Headers/FootersBasicFull HTML
Merge PDFs
Split PDFs
Watermarks
Text Extraction
Password Protection
Cross-Platform

Migration Checklist

Pre-Migration

  • Inventory all PDFPrinting.NET usage in codebase
  • Document all printer names currently used
  • Note all print settings configurations
  • Identify if cross-platform support is needed
  • Plan IronPDF license key storage (environment variables recommended)
  • Test with IronPDF trial license first

Package Changes

  • Remove PdfPrintingNet NuGet package
  • Install IronPdf NuGet package: dotnet add package IronPdf

Code Changes

  • Update namespace imports (PdfPrintingNet / legacy TerminalWorks.PDFPrintingIronPdf)
  • Convert pdfPrint.Print(path) calls to the PdfDocument.FromFile(path).Print() pattern
  • Move per-print properties (Copies, Duplex, Collate, PrinterName) onto a PrintSettings object
  • Adopt new capabilities: use ChromePdfRenderer.RenderHtmlAsPdf / RenderUrlAsPdf for HTML and URL inputs (no equivalent existed in PDFPrinting.NET)
  • Configure headers/footers via RenderingOptions.HtmlHeader and HtmlFooter (new capability)
  • Set IronPdf.License.LicenseKey at application startup

Post-Migration

  • Test printing on all target platforms
  • Verify header/footer rendering
  • Consider adding PDF generation for dynamic documents
  • Add new capabilities (merging, watermarks, security) as needed

Please note: PDFPrinting.NET is a registered trademark of its respective owner. This site is not affiliated with, endorsed by, or sponsored by TerminalWorks. All product names, logos, and brands are property of their respective owners. Comparisons are for informational purposes only and reflect publicly available information at the time of writing.
Curtis Chau
Technical Writer

Curtis Chau holds a Bachelor’s degree in Computer Science (Carleton University) and specializes in front-end development with expertise in Node.js, TypeScript, JavaScript, and React. Passionate about crafting intuitive and aesthetically pleasing user interfaces, Curtis enjoys working with modern frameworks and creating well-structured, visually appealing manuals.

...
Read More

Related Articles

Key in blue circle

Get your free 30-day Trial Key instantly.

Your trial license will be sent to your email address

No limitations. 100% unlocked. No credit card.

bullet_checkedNo credit card or account creation requiredNo limitations. 100% unlocked. No credit card.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Book your free Live Demo
Booking Badge

Trusted by Millions of Engineers Worldwide

Iron Software's customer logos
Get Your No-Obligation Consult
Complete the form below or email sales@ironsoftware.com
Your details will always be kept confidential.
Trusted by Millions of Engineers Worldwide
Iron Software's customer logos
Get your free 30-day Trial Key instantly.
No credit card or account creation required