在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
PDF 是可攜式文件格式。最簡單的說明方式是想像一個包含從圖形到文本等一系列文件的資料夾。這些元素構成了現代 PDF,它們是創建 PDF 的基本構建模塊。這種文件格式在 1990 年代被“發現/發明”作為在使用不同計算機設置的用戶之間交換信息的一種方式。
在本文中,我們將比較兩個流行的 .NET 組件的 PDF 庫。這兩個庫是:
IronPDF 和 SautinSoft PDF Focus .Net 都專注於創建可以在您的 Microsoft .NET 應用程式(包括 ASP.NET 網絡應用程式和傳統 Windows 應用程式)中讀取或編輯的 PDF 文件。現在我們可以比較這兩個庫,以決定在我們的應用程式中使用哪個最佳。首先,我們將比較這兩個庫的功能,然後我們將比較它們在轉換和操作 PDF 文件時的性能水平。
這兩個庫都受 Microsoft .NET 框架支持。
SautinSoft PDF Focus .Net 是設計來協助您開發需要將文件轉換為 PDF 文件的應用程式。如果您希望提供一種從 WinForms 或 WPF/XAML 應用程式中將 PDF 轉換為 Word 的方法,您只需要添加對 "SautinSoft.PdfFocus.dll" 的引用,然後寫 3-4 行 C# 程式碼。
以下是 SautinSoft PDF Focus .Net 的功能:
能夠使用base64算法生成帶有圖片的HTML文檔。這使您能夠完全在內存中將PDF轉換為HTML,而不需要硬盤。
IronPDF 是一款專為 .NET 開發者設計的 Iron Software 產品。它提供了一種簡單且智能的方法,可以將任何形式的 HTML 網頁轉換成 PDF 格式,避免了只用一些代碼片段生成任何形式 PDF 文件所產生的問題。
此外,IronPDF 還提供了程式化地在 PDF 文件中包含各種元素的功能,包括頁眉、頁腳、水印和書籤。
以下是 IronPDF 的功能:
IronPDF.dll 可以直接從 官方網站 並用作 .NET 專案中的參考。IronPDF 類別可以使用 IronPdf 命名空間進行訪問。
SautinSoft.PdfFocus 套件可以直接從官方網站下載,並用作 .NET 專案中的參考資料。SautinSoft.PdfFocus 物件可用於轉換文件。
建立一個新專案 (在這種情況下,一個命令行應用程式)
請遵循上述相同的步驟,但搜尋 IronPDF 而非 SautinSoft.PdfFocus。
將 IronPDF 庫添加為項目引用,如下所示:
這個庫為開發人員提供了高質量的轉換服務,且價格實惠。主要的亮點是,PDF Focus .Net 比所有的競爭對手都便宜。例如,一個 PDF Focus .Net - HTML Edition 的授權價格是 $749。(美元), 總版本價格從 $778 起。
"Picasso" — 將 PDF 轉換為影像。起價 $599。
HTTP標頭
如果您需要一個可從 PDF 文件中提取文本數據的 .NET 庫,那麼您來對地方了。
PDF Focus .Net 幫助您從任何 PDF 文件中提取文本。文本可以從整個文檔或單獨的頁面中提取。該庫提取的文本質量高,單詞間沒有不必要的空格,並且還支持 Unicode 字符。此外,文本的佈局看起來與 RTF 中一樣,具有正確的換行和列。它還提供了一個將 PDF 文件轉換的 API。
SautinSoft PDF Focus具有自己的PDF閱讀器和DOCX渲染器。您的 .NET 應用程式可以即時將任何PDF文件轉換為DOCX,而無需依賴Microsoft Office或Adobe Acrobat。幾乎所有應用程式的功能都被支持。生成的DOCX文件將包括段落、欄、表格、超連結、圖片、分頁符號等。
另一個值得注意的點是,PDF Focus .Net具有人工智慧功能,能夠理解並重建具有行和單元格的實際表格。 (PDF 文件並沒有真正的表格...如果你在 PDF 裡看到表格,那實際上只是一些線條,讓人覺得像是真正的表格。).
可以使用 .NET Framework 和 .NET Core 2.0。請注意,PDF Focus .Net 完全由托管的 C# 編寫,是一個完全獨立的庫。
支持多平台組件,並與雲平台和服務完全兼容,例如:
AWS
Docker
SharePoint
// 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")
' PM> Install-Package IronPdf
'
Imports IronPdf
'
Private 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
Dim PDF = Renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", "C:\site\assets\")
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'PDF.SaveAs("html-with-assets.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
// 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
IRON VB CONVERTER ERROR developers@ironsoftware.com
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
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"); }
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
SautinSoft 函式庫的主要缺點是它會顯示試用通知「由未授權版本的 PDF Focus .Net 創建的」,並隨機添加「試用版」字樣。而 IronPDF 則沒有這個問題。
使用 IronPDF 的基本價格幾乎是 SautinSoft 的一半。
當我們比較這兩個函式庫時,可以清楚地看到 IronPDF 更可靠且具有成本效益,幾乎是 SautinSoft 價格的一半,同時提供更好的支援和功能。
在本文中,我們比較了 IronPDF 和 SautinSoft PDF Focus .Net。我們發現 IronPDF 用於將網頁表單、本地 HTML 頁面和其他網頁轉換為 PDF ,而 SautinSoft PDF Focus 則用於將 PDF 轉換為任何格式,如 Docx、圖片、HTML 等。通過試用,我們發現 IronPDF 提供了無限試用功能,並且不會在輸出產品上添加產品標籤。
總結來說,我們更喜歡 IronPDF,因為它有更好的性能,並且為使用可攜式文件格式的開發人員提供了許多功能。他們還提供良好的支持和文檔,以確保充分利用所有令人印象深刻的功能。