Test in production without watermarks.
Works wherever you need it to.
Get 30 days of fully functional product.
Have it up and running in minutes.
Full access to our support engineering team during your product trial
PDF stands for Portable Document Format. The easiest way to summarize what this means is to imagine a folder that contains a collection of files, from graphics to text and more. These elements make up modern PDFs, and they are the basic building blocks from which PDFs are created. This file format was "discovered/invented" in the 1990s as a way to exchange information between users with different computer settings.
In this article, we will compare two popular PDF libraries for .NET components. These two libraries are:
IronPDF and SautinSoft PDF Focus .NET both focus on creating PDF files that can be read or edited in your Microsoft .NET applications, including ASP.NET web applications and traditional Windows applications. We can now compare these two libraries to decide which is best to use in our application. First, we will compare the features of the two libraries, then we will move on to their performance levels when converting and manipulating PDF files.
Both libraries are supported by the Microsoft .NET framework.
SautinSoft PDF Focus .NET is designed to assist you in the development of applications that require the conversion of files to PDF documents. If you wish to provide a way to convert PDF to Word from your WinForms or WPF/XAML application, you only need to add a reference to "SautinSoft.PdfFocus.dll" and write 3-4 lines of C# code.
Below are the features of SautinSoft PDF Focus .NET:
IronPDF from Iron Software is a powerful tool designed for .NET developers. It provides an easy and smart approach to transform any form of HTML web page into PDF format without the problems that arise from producing any form of PDF document with only some strings of code.
In addition, IronPDF provides the ability to programmatically include many kinds of elements in a PDF document, including headers, footers, watermarks, and bookmarks.
Below are the features of IronPDF:
IronPDF.dll can be downloaded directly from the IronPDF NuGet Package and used as a reference in .NET projects. IronPDF classes can be accessed using the IronPdf namespace.
SautinSoft.PdfFocus packages can be downloaded directly from the official website and used as a reference in .NET projects. SautinSoft.PdfFocus objects can be used to convert documents.
Follow the same steps mentioned above, but search for IronPDF instead of SautinSoft.PdfFocus.
Add the IronPDF library as a project reference, as shown below:
This library offers developers top-quality conversion at affordable prices. The main point of interest is that PDF Focus .NET is less expensive than all of its competitive counterparts. For example, one license for the PDF Focus .NET - HTML Edition is valued at $749(USD), and the Total Edition starts from $778.
If you need a .NET library that can extract text data from PDF documents, then you are in the right place.
PDF Focus .NET helps you extract text from any PDF document. Text can be extracted from an entire document or individual pages. The library extracts high-quality text without unnecessary spaces between words, and it also supports Unicode characters. Furthermore, the layout of the text looks the same as in RTF, with the correct line breaks and columns. It also provides an API for converting PDF documents.
SautinSoft PDF Focus has its own PDF reader and DOCX renderer. Your .NET application will be able to convert any PDF documents to DOCX on the fly, without any dependencies on Microsoft Office or on Adobe Acrobat. Almost all features from both applications are supported. The resulting DOCX document will contain paragraphs, columns, tables, hyperlinks, images, page breaks, and so forth.
Another point of interest is that PDF Focus .NET has an AI feature and can understand and recreate real tables with rows and cells (PDF documents don't have real tables ... if you see a table inside a PDF, it is actually just a set of lines that just gives the feeling of a real table).
// PM> Install-Package IronPdf
using IronPdf;
var Renderer = new IronPdf.ChromePdfRenderer();
// Render HTML string as a PDF document and save it
Renderer.RenderHtmlAsPdf("<h1>Test HTML with images</h1>").SaveAs("test_image.pdf");
/****** Advanced ******/
// Render HTML and external assets into a PDF
// BasePath is used to resolve relative paths to assets like images and styles
var PDF = Renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
PDF.SaveAs("html-with-assets.pdf");
// PM> Install-Package IronPdf
using IronPdf;
var Renderer = new IronPdf.ChromePdfRenderer();
// Render HTML string as a PDF document and save it
Renderer.RenderHtmlAsPdf("<h1>Test HTML with images</h1>").SaveAs("test_image.pdf");
/****** Advanced ******/
// Render HTML and external assets into a PDF
// BasePath is used to resolve relative paths to assets like images and styles
var PDF = Renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
PDF.SaveAs("html-with-assets.pdf");
' PM> Install-Package IronPdf
Imports IronPdf
Private Renderer = New IronPdf.ChromePdfRenderer()
' Render HTML string as a PDF document and save it
Renderer.RenderHtmlAsPdf("<h1>Test HTML with images</h1>").SaveAs("test_image.pdf")
'''**** Advanced *****
' Render HTML and external assets into a PDF
' BasePath is used to resolve relative paths to assets like images and styles
Dim PDF = Renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", "C:\site\assets\")
PDF.SaveAs("html-with-assets.pdf")
// PM> Install-Package IronPdf
using IronPdf;
// Create a new renderer instance
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
// Render a PDF from a URL
var Pdf = Renderer.RenderUrlAsPdf("https://www.google.com/");
// Save the PDF file
Pdf.SaveAs("url.pdf");
// see also Pdf.Stream for handling PDF data directly from memory
// PM> Install-Package IronPdf
using IronPdf;
// Create a new renderer instance
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
// Render a PDF from a URL
var Pdf = Renderer.RenderUrlAsPdf("https://www.google.com/");
// Save the PDF file
Pdf.SaveAs("url.pdf");
// see also Pdf.Stream for handling PDF data directly from memory
' PM> Install-Package IronPdf
Imports IronPdf
' Create a new renderer instance
Private Renderer As New IronPdf.ChromePdfRenderer()
' Render a PDF from a URL
Private Pdf = Renderer.RenderUrlAsPdf("https://www.google.com/")
' Save the PDF file
Pdf.SaveAs("url.pdf")
' see also Pdf.Stream for handling PDF data directly from memory
// PM> Install-Package IronPdf
using IronPdf;
using System.IO;
using System.Linq;
// Get all image files (.jpg or .jpeg) from a specific directory
var ImageFiles = Directory.EnumerateFiles(@"C:\project\test").Where(f => f.EndsWith(".jpg") || f.EndsWith(".jpeg"));
// Convert the images to a single PDF document and save it
ImageToPdfConverter.ImageToPdf(ImageFiles).SaveAs(@"C:\project\testing.pdf");
// Use PdfDocument.RasterizeToImageFiles() to flatten a PDF back into images or thumbnails
// PM> Install-Package IronPdf
using IronPdf;
using System.IO;
using System.Linq;
// Get all image files (.jpg or .jpeg) from a specific directory
var ImageFiles = Directory.EnumerateFiles(@"C:\project\test").Where(f => f.EndsWith(".jpg") || f.EndsWith(".jpeg"));
// Convert the images to a single PDF document and save it
ImageToPdfConverter.ImageToPdf(ImageFiles).SaveAs(@"C:\project\testing.pdf");
// Use PdfDocument.RasterizeToImageFiles() to flatten a PDF back into images or thumbnails
' PM> Install-Package IronPdf
Imports IronPdf
Imports System.IO
Imports System.Linq
' Get all image files (.jpg or .jpeg) from a specific directory
Private ImageFiles = Directory.EnumerateFiles("C:\project\test").Where(Function(f) f.EndsWith(".jpg") OrElse f.EndsWith(".jpeg"))
' Convert the images to a single PDF document and save it
ImageToPdfConverter.ImageToPdf(ImageFiles).SaveAs("C:\project\testing.pdf")
' Use PdfDocument.RasterizeToImageFiles() to flatten a PDF back into images or thumbnails
using System;
using System.IO;
string pdfFile = @"c:\test.pdf";
MemoryStream docxStream = new MemoryStream();
SautinSoft.PdfFocus f = new SautinSoft.PdfFocus();
// Open a PDF file from disk into a FileStream
using (FileStream pdfStream = new FileStream(pdfFile, FileMode.Open, FileAccess.Read))
{
f.OpenPdf(pdfStream);
if (f.PageCount > 0)
{
// Convert the PDF to a Word document and store it in docxStream
int res = f.ToWord(docxStream);
// Save the DOCX to disk if conversion was successful
if (res == 0)
{
string docxFile = Path.ChangeExtension(pdfFile, ".docx");
File.WriteAllBytes(docxFile, docxStream.ToArray());
System.Diagnostics.Process.Start(docxFile);
}
}
}
using System;
using System.IO;
string pdfFile = @"c:\test.pdf";
MemoryStream docxStream = new MemoryStream();
SautinSoft.PdfFocus f = new SautinSoft.PdfFocus();
// Open a PDF file from disk into a FileStream
using (FileStream pdfStream = new FileStream(pdfFile, FileMode.Open, FileAccess.Read))
{
f.OpenPdf(pdfStream);
if (f.PageCount > 0)
{
// Convert the PDF to a Word document and store it in docxStream
int res = f.ToWord(docxStream);
// Save the DOCX to disk if conversion was successful
if (res == 0)
{
string docxFile = Path.ChangeExtension(pdfFile, ".docx");
File.WriteAllBytes(docxFile, docxStream.ToArray());
System.Diagnostics.Process.Start(docxFile);
}
}
}
Imports System
Imports System.IO
Private pdfFile As String = "c:\test.pdf"
Private docxStream As New MemoryStream()
Private f As New SautinSoft.PdfFocus()
' Open a PDF file from disk into a FileStream
Using pdfStream As New FileStream(pdfFile, FileMode.Open, FileAccess.Read)
f.OpenPdf(pdfStream)
If f.PageCount > 0 Then
' Convert the PDF to a Word document and store it in docxStream
Dim res As Integer = f.ToWord(docxStream)
' Save the DOCX to disk if conversion was successful
If res = 0 Then
Dim docxFile As String = Path.ChangeExtension(pdfFile, ".docx")
File.WriteAllBytes(docxFile, docxStream.ToArray())
System.Diagnostics.Process.Start(docxFile)
End If
End If
End Using
using System;
using SautinSoft;
PdfFocus f = new PdfFocus();
f.OpenPdf(@"C:\Computer\testpdf");
if (f.PageCount > 0)
{
// Set conversion options for images
f.ImageOptions.ImageFormat = System.Drawing.Imaging.ImageFormat.Jpeg;
f.ImageOptions.Dpi = 200;
// Save all PDF pages as JPEG images
f.ToImage(@"C:\Pictures\", "page");
}
using System;
using SautinSoft;
PdfFocus f = new PdfFocus();
f.OpenPdf(@"C:\Computer\testpdf");
if (f.PageCount > 0)
{
// Set conversion options for images
f.ImageOptions.ImageFormat = System.Drawing.Imaging.ImageFormat.Jpeg;
f.ImageOptions.Dpi = 200;
// Save all PDF pages as JPEG images
f.ToImage(@"C:\Pictures\", "page");
}
Imports System
Imports SautinSoft
Private f As New PdfFocus()
f.OpenPdf("C:\Computer\testpdf")
If f.PageCount > 0 Then
' Set conversion options for images
f.ImageOptions.ImageFormat = System.Drawing.Imaging.ImageFormat.Jpeg
f.ImageOptions.Dpi = 200
' Save all PDF pages as JPEG images
f.ToImage("C:\Pictures\", "page")
End If
using System;
using SautinSoft;
PdfFocus f = new PdfFocus();
f.OpenPdf(@"c:\test.pdf");
if (f.PageCount > 0)
{
// Convert PDF to HTML
int result = f.ToHtml(@"c:\output.html");
// Open the resulting HTML document in the default browser
if (result == 0)
{
System.Diagnostics.Process.Start(@"c:\output.html");
}
}
using System;
using SautinSoft;
PdfFocus f = new PdfFocus();
f.OpenPdf(@"c:\test.pdf");
if (f.PageCount > 0)
{
// Convert PDF to HTML
int result = f.ToHtml(@"c:\output.html");
// Open the resulting HTML document in the default browser
if (result == 0)
{
System.Diagnostics.Process.Start(@"c:\output.html");
}
}
Imports System
Imports SautinSoft
Private f As New PdfFocus()
f.OpenPdf("c:\test.pdf")
If f.PageCount > 0 Then
' Convert PDF to HTML
Dim result As Integer = f.ToHtml("c:\output.html")
' Open the resulting HTML document in the default browser
If result = 0 Then
System.Diagnostics.Process.Start("c:\output.html")
End If
End If
The main disadvantage of the SautinSoft library is that it prints the trial notice "Created by an unlicensed version of PDF Focus .NET," and the random addition of the word "Trial." This is not the case with IronPDF.
The basic price of using IronPDF is almost half that of SautinSoft.
When we compare both libraries, we can clearly see that IronPDF is more reliable and cost-effective, almost half the price of SautinSoft, and provides better support and features.
In this article, we have compared IronPDF and SautinSoft PDF Focus .NET. We have found that IronPDF is used for the conversion of web forms, local HTML pages, and other web pages to PDF with .NET, while SautinSoft PDF Focus is used for the conversion of PDF to any format such as DOCX, images, HTML, etc. With trial work, we found that IronPDF provides unlimited trial features and adds no product labels to the output product.
In conclusion, we prefer IronPDF because of its better performance and the numerous features provided to developers who work with the Portable Document Format. They also provide good support and documentation to ensure optimal use of all the impressive features.
SautinSoft PDF Focus .NET allows for conversion of files to PDF documents, analyzes and processes PDF documents, generates documents in HTML5 format, and provides APIs for PDF conversion.
IronPDF allows conversion of HTML web pages to PDF format, includes headers, footers, watermarks, bookmarks, and supports image and text extraction, digital signatures, and more.
IronPDF can be installed via the NuGet package manager in Visual Studio by searching for IronPDF and adding it as a project reference.
IronPDF offers unlimited use for development with cost-effective licensing, free one-year support, and a 30-day money-back guarantee.
SautinSoft PDF Focus .NET offers various editions with one-time purchase options starting from $599, including one year of unlimited support.
IronPDF supports HTML4, HTML5, CSS3, JavaScript, Angular, React, responsive layouts, and external stylesheets, among other features.
SautinSoft PDF Focus can extract high-quality text data from PDF documents, supporting Unicode characters and preserving the text layout.
Yes, IronPDF is compatible with macOS, Linux, and Windows, and supports various .NET frameworks and cloud hosting platforms.
IronPDF offers more cost-effective pricing, better performance, no trial labels on outputs, and extensive features, making it a preferred choice over SautinSoft.
The main disadvantage is that the trial version of SautinSoft PDF Focus adds trial notices to the output, which IronPDF does not.