产品比较

IronPDF 和 SautinSoft PDF Focus 的比较

Chipego
奇佩戈-卡琳达
2022年九月26日
分享:

1.导言

PDF 是便携式文档格式的缩写。 最简单的概括方法是想象一个文件夹,其中包含从图形到文本等一系列文件。 这些元素构成了现代 PDF,也是创建 PDF 的基本构件。 这种文件格式是在 20 世纪 90 年代 "发现/发明 "的,用于在计算机设置不同的用户之间交换信息。

在本文中,我们将比较两种流行的 .NET 组件 PDF 库。 这两个图书馆是

  • IronPDF
  • SautinSoft PDF Focus .NET

    IronPDF 和 SautinSoft PDF Focus .NET 都专注于创建可在 Microsoft .NET 应用程序(包括 ASP.NET 网络应用程序和传统 Windows 应用程序)中阅读或编辑的 PDF 文件。 现在,我们可以对这两个库进行比较,以决定在应用程序中使用哪个库最好。 首先,我们将比较这两个库的功能,然后介绍它们在转换和处理 PDF 文件时的性能水平。

    这两个库都由 Microsoft .NET Framework 支持。

1.1 SautinSoft PDF Focus .NET - 功能

SautinSoft PDF Focus .NET 旨在帮助您开发需要将文件转换为 PDF 文档的应用程序。 如果您希望在 WinForms 或 WPF/XAML 应用程序中提供将 PDF 转换为 Word 的方法,您只需添加对 "SautinSoft.PdfFocus.dll "的引用并编写 3-4 行 C# 代码即可。

以下是 SautinSoft PDF Focus .NET 的功能:

  • 使用 .NET Framework 转换 PDF 文档。
  • 能够分析和处理使用 Adobe 和其他第三方 PDF 创建产品生成的 PDF 文档
  • 包括内置 PDF 解析器。
  • 生成 HTML5 格式的文档。

    • HTML 固定格式最适合渲染,因为它可以完全复制 PDF 的布局和页面结构。 这些文档的标记非常复杂,有许多标签使用 (x,y) 坐标进行样式设置。
  • 当生成的 PDF 需要额外的实践处理(即编辑和合并)时,HTML Flowing 是最佳选择。
  • 生成的 PDF 文档的标记结构非常简单易懂。
  • 能够使用 base64 算法生成带有图像的 HTML 文档。 这样,您就可以完全在内存中将 PDF 转换为 HTML,而无需硬盘驱动器。
  • 提供转换 PDF 的 API。

1.2 IronPDF 功能

Iron Software 的 IronPDF 是专为 .NET 开发人员设计的强大工具。 它提供了一种简单、智能的方法,可将任何形式的 HTML 网页转换为 PDF 格式,而不会出现只用一些代码字符串就能生成任何形式 PDF 文档的问题。

此外,IronPDF 还能以编程方式在 PDF 文档中包含多种元素,包括页眉、页脚、水印和书签。

以下是 IronPDF 的功能:

  • 轻松将图像转换为 PDF,反之亦然
  • 从现有 PDF 文件中提取图像和文本
  • 无需使用 Adobe 软件即可通过编程将 PDF 发送到打印机
  • 从文件、二进制数据和内存中保存 PDF
  • 支持流和 128 位加密
  • 支持 PDF 数字签名
  • 轻松添加、编辑和删除 PDF 大纲和书签
  • 以编程方式在任何 PDF 页面上添加便笺
  • 旋转页面
  • 添加和删除页面
  • 添加水印并改变其不透明度
  • 将 HTML 内容合并到现有的 PDF 文档中
  • 以合理的方式创建和自定义页眉和页脚

2.安装

2.1 直接下载 (IronPDF)

可以直接从IronPDF NuGet 包下载IronPDF.dll,并在.NET项目中用作引用。 可以通过使用IronPdf命名空间来访问IronPDF类。

2.2 直接下载 (SautinSoft PDF Focus .NET)

SautinSoft.PdfFocus 软件包可直接从官方网站下载,并在 .NET 项目中用作参考。 SautinSoft.PdfFocus 对象可用于转换文档。

2.3 Visual Studio 安装步骤

2.3.1 SautinSoft 安装步骤

  • 启动 Visual Studio
  • 创建一个新项目(在此情况下为控制台应用程序)
  • 使用“管理 NuGet 包”安装SautinSoft.PdfFocus,如下所示:

    Sautinsoft Pdf Focus Alternatives 1 related to 2.3.1 SautinSoft 安装步骤
    Sautinsoft Pdf Focus Alternatives 2 related to 2.3.1 SautinSoft 安装步骤
  • 单击 "安装 "安装最新版本; 一旦完成,SautinSoft.PdfFocus.dll 将自动添加到您的项目中,如下所示:
    Sautinsoft Pdf Focus Alternatives 3 related to 2.3.1 SautinSoft 安装步骤

2.3.2 IronPDF 安装步骤

按照上述相同步骤,但搜索 IronPDF 而不是 SautinSoft.PdfFocus。

Sautinsoft Pdf Focus Alternatives 4 related to 2.3.2 IronPDF 安装步骤

添加 IronPDF 库作为项目参考,如下图所示:

Sautinsoft Pdf Focus Alternatives 5 related to 2.3.2 IronPDF 安装步骤

3.定价

3.1 IronPDF

  • 开发人员可以无限制地使用该库进行开发。 就一般许可而言,费率非常经济实惠。
  • 一年无限期免费支持
  • 也可提供免费试用版,用于许可目的
    Sautinsoft Pdf Focus Alternatives 6 related to 3.1 IronPDF
  • 所有许可证均提供 30 天退款保证。
  • 适用于所有环境(开发、暂存、生产等)
  • 一年的无条件支持
  • 一次性购买

3.2 SautinSoft PDF Focus .NET

该库以合理的价格为开发人员提供最高质量的转换。 主要关注点是 PDF Focus .NET 的价格低于所有同类竞争产品。 例如,PDF Focus .NET - HTML 版本的一个许可证价值$749(美元),而 Total 版本起价为 $778。

  • 仅限一次性购买; 提供终身许可
  • 一年无限期支持
  • "全面" - 将 PDF 转换为所有支持的格式。 起价 778 美元
  • “Office”——将 PDF 转换为 Word、Excel 和文本 (txt)。 起价 599 美元
  • "毕加索" - 将 PDF 转换为图像。 起价 599 美元
  • "HTML" - 将 PDF 转换为 HTML/XML。 从$749开始

4.IronPDF 支持和设置

4.1 支持 HTML 转 PDF

  • 完整、高保真的 HTML4 和 HTML5 渲染
  • CSS3
  • JavaScript
  • 支持 Angular 和 React
  • 图片资产
  • SVG 资产
  • 图标字体(Fontello,Bootstrap,Font Awesome,Barcode Fonts)
  • 响应式布局
  • 外部样式表和资产(HTTP、HTTPS 或文件系统)
  • 静态和多线程渲染
  • 使用自定义 CSS 加载 URL
  • 使用凭证进行网络登录
  • 用户代理
  • 代理
  • Cookies
  • HTTP 标头
  • 表单变量(允许在 HTML 登录表单后进行登录)

4.2 HTML 到 PDF 的设置

  • 设置自定义的 "基本 URL "或文件路径,以便从文件系统或网络上轻松加载资产文件
  • 虚拟视口(宽度和高度)允许使用响应式布局
  • 屏幕或打印 CSS 媒体类型
  • .NET程序集,提供以最少代码执行流程的功能
  • 将 HTML 表单转换为 PDF 表单
  • 只读或可编辑
  • 以编程方式加载自定义样式表
  • 以 DPI 为单位设置输出 PDF 的分辨率
  • 设置 JPEG 图像质量
  • 启用 JavaScript 支持,包括可选的呈现延迟
  • 自定义页码
  • 自动缩放 HTML 内容以适应纸张尺寸
  • 保持文本渲染质量
  • 全彩和灰度 PDF
  • 接受任何主要文件编码的 HTML; 默认为 UTF-8
  • 设置 PDF 纸张页边距
  • 以毫米或英寸为单位
  • 支持零边距 PDF
  • 使用任何国际标准纸张尺寸创建 PDF
  • 支持以毫米或英寸为单位的自定义尺寸
  • 纸张方向为横向或纵向
  • 启用或禁用在 PDF 中显示 HTML 背景
  • 自定义缩放
  • GPU 加速:Linux 上的 WebGL

5.SautinSoft PDF Focus 支持

5.1 将 PDF 转换为文本

如果您需要能从 PDF 文档中提取文本数据的 .NET 库,那么您找对地方了。

PDF Focus .NET 可帮助您从任何 PDF 文档中提取文本。 文本可以从整个文档或单个页面中提取。 该库可提取高质量文本,字与字之间不留不必要的空格,还支持 Unicode 字符。 此外,文本的布局要与 RTF 格式相同,换行和分栏要正确。 它还提供了转换 PDF 文档的 API。

5.2 将 PDF 转换为 DOCX

SautinSoft PDF Focus 拥有自己的 PDF 阅读器和 DOCX 渲染器。 您的 .NET 应用程序将能够将任何 PDF 文档即时转换为 DOCX,而无需依赖 Microsoft Office 或 Adobe Acrobat。 几乎支持这两个应用程序的所有功能。 翻译后的 DOCX 文档将包含段落、列、表格、超链接、图像、分页符等。

另一个值得关注的点是,PDF Focus .NET 具有 AI 功能,能够理解并重建具有行和单元格的真实表格(PDF 文档中没有真正的表格……如果您在 PDF 中看到一个表格,它实际上只是一些线条,只是给人一种真实表格的感觉)。

6.兼容性(技术信息)

6.1 IronPDF 兼容性

  • .NET Framework 4.0、4.5 和 4.6.1
  • .NET Core 2.1、3.0、3.1、.NET 5 和 .NET 6
  • 与 macOS、Linux 和 Windows 完全兼容
  • 符合 .NET 标准 2.0,实现通用兼容性
  • 包括对云托管的支持:Windows Azure、Amazon Web Services (AWS) 等
  • Docker

6.2 SautinSoft PDF Focus 兼容性

  • 要求使用 .NET Framework 4.0 或更高版本。 该产品兼容所有 .NET 语言。
  • 可使用 .NET Framework 和 .NET Core 2.0。 请注意,PDF Focus .NET 完全是用托管 C# 编写的,因此是一个绝对独立的库。
  • 支持多平台组件,与云平台和服务完全兼容,如

    • AWS

    • Docker

    • SharePoint

    • 谷歌云平台

7.源代码示例

7.1 IronPDF

HTML 转 PDF:

// PM> Install-Package IronPdf

using IronPdf;

var Renderer = new IronPdf.ChromePdfRenderer();
Renderer.RenderHtmlAsPdf("<h1>Test HTML with images</h1>").SaveAs("test_image.pdf");

/****** Advanced ******/

// Load external html assets: images, css and javascript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from 
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();
Renderer.RenderHtmlAsPdf("<h1>Test HTML with images</h1>").SaveAs("test_image.pdf");

/****** Advanced ******/

// Load external html assets: images, css and javascript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from 
var PDF = Renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
PDF.SaveAs("html-with-assets.pdf")
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

URL 转 PDF:

// PM> Install-Package IronPdf

using IronPdf;

IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
var Pdf = Renderer.RenderUrlAsPdf("https://www.google.com/");

Pdf.SaveAs("url.pdf");  
// see also Pdf.Stream
// PM> Install-Package IronPdf

using IronPdf;

IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
var Pdf = Renderer.RenderUrlAsPdf("https://www.google.com/");

Pdf.SaveAs("url.pdf");  
// see also Pdf.Stream
' PM> Install-Package IronPdf

Imports IronPdf

Private Renderer As New IronPdf.ChromePdfRenderer()
Private Pdf = Renderer.RenderUrlAsPdf("https://www.google.com/")

Pdf.SaveAs("url.pdf")
' see also Pdf.Stream
$vbLabelText   $csharpLabel

图像到 PDF:

// PM> Install-Package IronPdf
using IronPdf;
using System.IO;
using System.Linq;

// Get all images(.jpg) from folder
var ImageFiles = System.IO.Directory.EnumerateFiles(@"C:\project\test").Where(f => f.EndsWith(".jpg") 
 f.EndsWith(".jpeg"));

// Convert the images to a PDF and save it.
ImageToPdfConverter.ImageToPdf(ImageFiles).SaveAs(@"C:\project\testing.pdf");

//Also see PdfDocument.RasterizeToImageFiles() method to flatten a PDF to images or thumbnails
// PM> Install-Package IronPdf
using IronPdf;
using System.IO;
using System.Linq;

// Get all images(.jpg) from folder
var ImageFiles = System.IO.Directory.EnumerateFiles(@"C:\project\test").Where(f => f.EndsWith(".jpg") 
 f.EndsWith(".jpeg"));

// Convert the images to a PDF and save it.
ImageToPdfConverter.ImageToPdf(ImageFiles).SaveAs(@"C:\project\testing.pdf");

//Also see PdfDocument.RasterizeToImageFiles() method to flatten a PDF to images or thumbnails
' PM> Install-Package IronPdf
Imports IronPdf
Imports System.IO
Imports System.Linq

' Get all images(.jpg) from folder
Private ImageFiles = System.IO.Directory.EnumerateFiles("C:\project\test").Where(Function(f) f.EndsWith(".jpg") f.EndsWith(".jpeg"))

' Convert the images to a PDF and save it.
ImageToPdfConverter.ImageToPdf(ImageFiles).SaveAs("C:\project\testing.pdf")

'Also see PdfDocument.RasterizeToImageFiles() method to flatten a PDF to images or thumbnails
$vbLabelText   $csharpLabel

7.2 SautinSoft PDF Focus

将 PDF 转换为 WORD 存入 C&num 内存;

string pdfFile = @"c:\test.pdf";
MemoryStream docxStream = new MemoryStream();

SautinSoft.PdfFocus f = new SautinSoft.PdfFocus();

// Assume that we already have a PDF document as stream.
using (FileStream pdfStream = new FileStream(pdfFile, FileMode.Open, FileAccess.Read))
{
    f.OpenPdf(pdfStream);

    if (f.PageCount > 0)
    {
        int res = f.ToWord(docxStream);

        // Save docxStream to a file for demonstration purposes.
        if (res == 0)
        {
            string docxFile = Path.ChangeExtension(pdfFile, ".docx");
            File.WriteAllBytes(docxFile, docxStream.ToArray());
            System.Diagnostics.Process.Start(docxFile);
        }
    }
}
string pdfFile = @"c:\test.pdf";
MemoryStream docxStream = new MemoryStream();

SautinSoft.PdfFocus f = new SautinSoft.PdfFocus();

// Assume that we already have a PDF document as stream.
using (FileStream pdfStream = new FileStream(pdfFile, FileMode.Open, FileAccess.Read))
{
    f.OpenPdf(pdfStream);

    if (f.PageCount > 0)
    {
        int res = f.ToWord(docxStream);

        // Save docxStream to a file for demonstration purposes.
        if (res == 0)
        {
            string docxFile = Path.ChangeExtension(pdfFile, ".docx");
            File.WriteAllBytes(docxFile, docxStream.ToArray());
            System.Diagnostics.Process.Start(docxFile);
        }
    }
}
Dim pdfFile As String = "c:\test.pdf"
Dim docxStream As New MemoryStream()

Dim f As New SautinSoft.PdfFocus()

' Assume that we already have a PDF document as stream.
Using pdfStream As New FileStream(pdfFile, FileMode.Open, FileAccess.Read)
	f.OpenPdf(pdfStream)

	If f.PageCount > 0 Then
		Dim res As Integer = f.ToWord(docxStream)

		' Save docxStream to a file for demonstration purposes.
		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
$vbLabelText   $csharpLabel

PDF 转图像

SautinSoft.PdfFocus f = new SautinSoft.PdfFocus();

f.OpenPdf(@"C:\Computer\testpdf");

if (f.PageCount > 0)
{
    //Set image properties: Jpeg, 200 dpi
    f.ImageOptions.ImageFormat = System.Drawing.Imaging.ImageFormat.Jpeg;
    f.ImageOptions.Dpi = 200;

    //Save all PDF pages as page1.jpg, page2.jpg ... pageN.jpg
    f.ToImage(@"C:\Pictures\, "page");
}
SautinSoft.PdfFocus f = new SautinSoft.PdfFocus();

f.OpenPdf(@"C:\Computer\testpdf");

if (f.PageCount > 0)
{
    //Set image properties: Jpeg, 200 dpi
    f.ImageOptions.ImageFormat = System.Drawing.Imaging.ImageFormat.Jpeg;
    f.ImageOptions.Dpi = 200;

    //Save all PDF pages as page1.jpg, page2.jpg ... pageN.jpg
    f.ToImage(@"C:\Pictures\, "page");
}
Dim f As New SautinSoft.PdfFocus()

f.OpenPdf("C:\Computer\testpdf")

If f.PageCount > 0 Then
	'Set image properties: Jpeg, 200 dpi
	f.ImageOptions.ImageFormat = System.Drawing.Imaging.ImageFormat.Jpeg
	f.ImageOptions.Dpi = 200

	'Save all PDF pages as page1.jpg, page2.jpg ... pageN.jpg
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'	f.ToImage("C:\Pictures\, "page"); }
$vbLabelText   $csharpLabel

PDF 转 HTML:

SautinSoft.PdfFocus f = new SautinSoft.PdfFocus();
f.OpenPdf(@"c:\test.pdf");

if (f.PageCount > 0)
{
    int result = f.ToHtml(@"c:\output.html");

    //Open HTML document
    if (result==0)
    {
        System.Diagnostics.Process.Start(@"c:\output.html");
    }
}
SautinSoft.PdfFocus f = new SautinSoft.PdfFocus();
f.OpenPdf(@"c:\test.pdf");

if (f.PageCount > 0)
{
    int result = f.ToHtml(@"c:\output.html");

    //Open HTML document
    if (result==0)
    {
        System.Diagnostics.Process.Start(@"c:\output.html");
    }
}
Dim f As New SautinSoft.PdfFocus()
f.OpenPdf("c:\test.pdf")

If f.PageCount > 0 Then
	Dim result As Integer = f.ToHtml("c:\output.html")

	'Open HTML document
	If result=0 Then
		System.Diagnostics.Process.Start("c:\output.html")
	End If
End If
$vbLabelText   $csharpLabel

8.优势

8.1 IronPDF

  • 只需 2-3 行代码即可完成转换,节省大量时间
  • 开发人员可以无限制地使用该库进行测试
  • 可轻松添加、编辑和删除 PDF 大纲/书签
  • 只需几行代码即可以编程方式向任何 PDF 页面添加文本注释(便签)。
  • 可从 HTML 或 PDF 资产中添加前景或背景覆盖层
  • 可在任何 PDF 文件中轻松添加不透明水印
  • 印章还可以添加到任何现有 PDF 页面的新 HTML 内容中
  • 逻辑或 HTML 页眉和页脚可与任何 PDF 文件一起使用。
  • 合并 PDF 页面并将其添加到现有页面中
  • 复制、添加和删除页面
  • 旋转页面和多平台组件运行
  • 编辑元数据、用户权限和 PDF 密码

8.2 SautinSoft PDF Focus

  • 为产品开发节省大量时间和成本。 用 C# 编写自己的 PDF 转换器需要很多天的努力,而且需要大约。 100,000-1,500,000 行 C# 代码。 PDF Focus .NET 节省了大量时间,您只需添加 "SautinSoft.PdfFocus.dll "的引用并编写 3-4 行 C# 代码即可。 无需聘请昂贵的开发人员,从而减少开发预算
  • 它还提供了一套 API,可一次性将 PDF 转换为各种格式:Word、DOCX、RTF、Excel、HTML、文本、多页 TIFF、JPEG 和 PNG
  • 这是一个独立的 PDF 库; 客户环境无需安装 Adobe Acrobat、MS Word、Excel 或任何其他软件
  • 只需一次性付款,之后您就可以终身使用该库。
  • 它可以轻松处理多页 TIFF 文件。
  • 此外,还提供全年免费的无限技术支持。

9.与 SautinSoft 相比使用 IronPDF 的优势

SautinSoft 库的主要缺点是会打印试用通知 "由未授权版本的 PDF Focus .NET 创建",并随机添加 "试用 "一词。IronPDF 则没有这种情况。

使用 IronPdf 的基本价格几乎是 SautinSoft 的一半。

当我们比较这两个库时,我们可以清楚地看到 IronPDF 更可靠,性价比更高,价格几乎是 SautinSoft 的一半,而且能提供更好的支持和功能。

10.结论

在本文中,我们比较了 IronPDF 和 SautinSoft PDF Focus .NET。 我们发现,IronPDF 用于将网页表单、本地 HTML 网页和其他网页转换为.NET 的 PDF,而 SautinSoft PDF Focus 则用于将 PDF 转换为 DOCX、图像、HTML 等任何格式。通过试用,我们发现 IronPdf 提供了无限制的试用功能,并且在输出产品中不添加任何产品标签。

总之,我们更倾向于 IronPDF,因为它的性能更好,而且为使用便携式文档格式的开发人员提供了众多功能。 他们还提供良好的支持和文档,以确保最佳使用所有令人印象深刻的功能。

Chipego
软件工程师
Chipego 拥有出色的倾听技巧,这帮助他理解客户问题并提供智能解决方案。他在 2023 年加入 Iron Software 团队,此前他获得了信息技术学士学位。IronPDF 和 IronOCR 是 Chipego 主要专注的两个产品,但他对所有产品的了解每天都在增长,因为他不断找到支持客户的新方法。他喜欢 Iron Software 的合作氛围,公司各地的团队成员贡献他们丰富的经验,以提供有效的创新解决方案。当 Chipego 离开办公桌时,你经常可以发现他在看书或踢足球。
< 前一页
IronPDF与PDFShift的对比
下一步 >
IronPDF和XFINIUM.PDF的比较