在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
這篇文章由 Jeff Fritz 撰寫,他是 .NET 開發領域廣受歡迎的權威。
在這篇文章中,Jeff 評審並比較了 IronPDF 庫與其他三個領先的 C#.NET PDF 庫:Aspose、SyncFusion 和 iTextPdf
我正在調查開發人員與三種商業 PDF 管理產品的整體體驗,並將其與 IronPDF 的體驗進行比較。我們將在以下領域進行比較和評估:
我們將以工具的最終評比分數卡作結。
開發者有許多PDF產品可供選擇。如何在眾多產品中區分並選擇適合其項目的產品呢?C#開發者在研究軟體工具時主要會查看三個地方:搜尋引擎、GitHub和NuGet。我們將在DuckDuckGo(私人搜尋引擎)上搜尋“PDF Software C#”,並在GitHub 以及NuGet.org上尋找這些PDF工具。NuGet是.NET的套件儲存庫。
產品 | DuckDuckGo | GitHub | NuGet |
---|---|---|---|
IronPDF | 5 | 未找到 | 5 |
Aspose | 22 | 37 | 3 |
SyncFusion | 49 | 不適用 | 8 |
iTextPDF | 未找到 | 40 | 7 |
注意事項:
我將每個服務的搜尋結果限制在前100個,在DuckDuckGo上無法找到IronPDF的GitHub倉庫以及iText的網站。SyncFusion沒有包含PDF創建範例的GitHub倉庫。
每個產品在其網站上有不同的取得方式。
IronPDF 在首頁有一個明顯的下載按鈕。
下載按鈕將路由至 NuGet.org 和標準的 .NET 套件安裝說明。
Aspose 在首頁有一個單擊選項,您必須選擇語言,然後系統會顯示該版本產品的詳細信息以及下載按鈕。
Aspose 將提示您下載工具,該頁面包含NuGet的說明和幾段宣傳資料。
SyncFusion 將其 PDF 管理庫歸類在「文檔處理 - PDF」。 他們的子網站如下所示:
然後你必須填寫一個表單,在他們的網站上創建一個擁有電子郵件地址、電話號碼和公司名稱的帳戶。SyncFusion 通過簡訊驗證你的電子郵件,然後允許你下載他們軟體的安裝程序。你也可以從 NuGet 安裝試用包,但他們說安裝程序提供的是“完整產品”。在註冊 SyncFusion 網站的幾天內,我收到了2封電子郵件和2通電話,提供幫助以便入門。這些電子郵件和電話語氣友好,但我覺得電話有點侵擾。
iTextPDF 明確表明只有一個產品和一個指向其產品的鏈接:
下載頁面提供三個下載選項,並要求註冊時提供電話號碼、電子郵件、職稱和公司名稱。
我發現iText 豐富的選擇讓人眼花繚亂,不知道該下載什麼。我選擇了iText 7,然後被引導到另一個畫面,從九個與PDF相關的產品中選擇下載。同樣地,我發現這很令人困惑,無法確定我專案所需的函式庫和工具。
iText 寄了一封後續郵件給我,裡面有他們客戶門戶網站的鏈接和生成的密碼。我嘗試使用提供的憑證登錄他們的門戶網站,但無法訪問該網站。
當開發人員下載任何函式庫時,授權將決定他們是否和如何在自己的專案中使用該產品。更寬鬆的授權允許工具與移動或桌面應用程序一起發佈,而更限制性的授權則可能限制工具僅能在受保護的伺服器上運行。
IronPDF 在首頁提供了一個明確的按鈕,位於「免費 NuGet 下載」按鈕旁邊,連結到授權條款。結果頁面清楚說明了覆蓋多少開發人員以及該產品可以使用的專案數量。對於一個組織的辦公室數量有限制。作為 SaaS 產品或本地應用程序進行軟體再分發需要額外的授權費用。
Aspose 有 提供 6 種不同的授權模式, 包裝時可選擇無支持、支持或支持加上諮詢。我發現他們的選項相當混亂,因為對於可以使用產品的項目類型、授權開發人員的人數以及組織規模都有一些限制。
公開網站項目包括支持:
包含 | IronPDF | Syncfusion | AsposePDF | iText |
---|---|---|---|---|
1 個網站 1 名開發者 1 個地點 支援 | `$Lite License` | $2,495 | $5,394 | |
10個網站 10 位開發人員 10個地點 支援 | `$ProfessionalLicense` | $13,990 | $28,771 | |
無限網站 支援 | `$Unlimited License` | 不適用 | $25,785+ (每年) |
SyncFusion 的 File Formats 產品一次性收費,包括對所有 .NET 應用程式類型的支援。此費用是按每名開發人員計算,合同的第二年會有費率減少。對於組織的規模或使用產品的項目數量沒有任何限制。他們也提供免費的 初創階段公司可獲得社群授權
iText 有幾個開源的產品,但他們讓你覺得需要購買許可證才能使用該產品。
購買商業授權的選項會跳轉到一個頁面,而不會立刻列出任何購買選項。您必須使用一個設定工具,填寫有關位置、語言、使用量以及您想使用的產品等信息。完成後,該工具會給出商業授權的報價。
如果產品是開源的,我可以只使用它而不選擇任何商業支持選項嗎?在您點擊進去之前不太清楚。 iText 7 社群網站 並發現它是符合AGPL許可證的,這需要您釋出使用他們庫的應用程式的源代碼。這是一個有趣的選擇,但可能會讓開發者感到困惑。
由於每個產品都有不同的部署模型,每個網站上保證的兼容性級別也有所不同。需要進行更多的研究來確定與不同的託管提供商和像Docker這樣的託管工具的兼容性。
環境 | IronPDF | Aspose | SyncFusion | iText |
---|---|---|---|---|
COM | 是的 | |||
.NET框架 | 是的 | 是的 | 是的 | 是的 |
.NET 5 | 是的 | 是的 | 是的 | |
.NET 6 | 是的 | 是的 | 是的 | |
.NET 標準 | 是的 | 是的 | 是的 | |
Xamarin | 是的 | 是的 | ||
MAUI | 是的 | |||
Azure | 是的 | |||
AWS | 是的 | 是的 | ||
%Mac | 是的 | |||
Linux | 是的 | |||
Docker | 是的 |
Aspose 是唯一聲稱可以與 COM 應用程式一起工作的產品,這通常是開發人員的遺留需求。iText 沒有在其網站上列出其支持的平台,對其 NuGet 套件的掃描顯示支持所指示的平台。SyncFusion 列出了對幾個使用者介面框架的支持,但未列出特定的運行時版本。iText 是唯一除了 IronPDF 之外聲稱支持雲服務的產品,其橫幅突顯了對 AWS 的支持。
我已經檢閱了每個產品及其網站上所介紹的“入門體驗”。這是各產品的“構建您的第一個應用程式”的指導。
我能夠使用 NuGet 安裝並開始使用 IronPDF 的樣本版本,只需一行代碼。非常方便,並且沒有使我的系統變得混亂。
IronPDF 樣本在 https://ironpdf.com/ 使用 .NET 6 及更早版本的簡單控制台或原生應用程式。它創建並加載一個新的 PDF,包含一個簡單的 "Hello World" 文字區塊,通過完成一個五行代碼範例來寫出文件。
代碼範例十分清晰,並且與 .NET 6 / C# 10 的格式完美配合。線上的代碼區塊有一個 "複製到剪貼板" 的按鈕,使運行起來非常方便。
該文件被寫入到專案的 bin/ 資料夾中,對於一個快速範例來說是可行的。不過,我希望它能寫在我剛寫的代碼文件旁邊,因為有些人可能不知道要去 bin/ 資料夾中找內容。
我必須安裝一個大型下載包,大小為217MB,才能在我的系統上開始使用Aspose庫。這並沒有安裝任何應用程式,只是在磁碟上放置了Aspose庫。
Aspose的範例在他們的說明文件中的「入門」部分,這使得找到它有點困難。範例代碼在 https://docs.aspose.com/pdf/net/hello-world-example/ 包含一些解釋程式碼嘗試做什麼的散文,並且與程式碼中的註釋感覺有些重複。
Aspose 範例無法按預期運行,需要改進。在我對其產品的審查中,遇到了以下問題:
我必須下載一個 874MB 的大型文件才能開始,而且安裝過程需要我登入到 Syncfusion 伺服器以提取和使用庫。安裝程式創建了一個「控制面板」應用程式,讓我能夠瀏覽磁碟上的多個示範。
SyncFusion 的示範位於他們產品頁面的大約中間位置 https://www.syncfusion.com/document-processing/pdf-framework/net 使用藍色背景和淺藍色文字。根據Lighthouse,這是低對比度,不適合某些使用者。
我將Syncfusion程式碼貼到Visual Studio中,但無法讓Visual Studio為範例代碼中提到的對象生成適當的“using語句”。事實上,當我要求Visual Studio嘗試定位並生成using語句時,它建議我安裝一個競爭產品的封裝:
SyncFusion範例的程式碼在螢幕上呈現時沒有任何作用。示範程式碼將PDF寫入MemoryStream,一個在記憶體中管理文件內容的物件。我修改了程式碼以寫入磁碟上的文件,並且正確生成了一個包含「Hello World」的文件。
iText 示範範例寫在產品首頁中間的簡潔程式碼編輯器中。 https://itextpdf.com/products/itext-7/itext-7-community 不同於其他的示範,iText 包含了一個連結來查看這段程式碼所生成的 PDF。
我需要從他們的客戶入口下載一個安裝包,並且註冊後一天早上5點收到了包含註冊說明的電子郵件。憑證無法正常使用,所以我改為從 NuGet 下載並安裝了可用的社群套件。
iText7提供的範例程式碼如原來所寫無法正常工作。這段程式碼還缺少一些 using 宣告,但一旦補充齊全後,這個應用程式確實生成了一個 PDF 檔案並將其寫入了專案的 bin/ 資料夾。
此評審元素調查開發人員與該庫的API和互動。這些工具每一個都有多種方法來創建和互動PDF文件。讓我們來看看每一個。
產品的文件將決定其在開發者中的長期成敗。隨著他們深入研究並需要更高級的功能,他們能多快找到相關資料,是否提供了有助於教學這些概念的範例。
在這些產品中,我在其 API 文件中搜索了添加數字簽名到 PDF 的能力。
API 文檔清晰且組織良好,左側面板的目錄附有實時過濾功能。右上角的搜索框也包含實時過濾功能,能快速返回幾篇關於提供簽名功能的各種組件的文章。API 網站有淺色和深色模式,這是一個開發人員喜歡的好功能。
PdfSignature
類別文件描述了該物件,但不包含任何示例代碼的連結。我在 ironpdf.com 網站上搜索 "signature",並找到了引用 PdfSignature
物件的示例代碼,位於 https://ironpdf.com/examples/digitally-sign-a-pdf/
Aspose API 文件將我鏈接到 PdfFileSignature 類時當我搜索 Signature。這個頁面像 IronPDF 一樣顯示了 PdfFileSignature
類的詳細信息,但沒有包含任何演示的鏈接或描述如何使用該類。
我返回到 Aspose 文檔的首頁在 https://docs.aspose.com/pdf/net/ 並搜尋了簽名。我當時被展示了一個相關文章的列表,並點擊進入了「在PDF文件中添加簽名」文章 https://docs.aspose.com/pdf/net/add-signature-in-pdf/
SyncFusion 的 PDF 檔案格式產品的基本文件頁面在 https://help.syncfusion.com/file-formats/pdf/overview 並在他們的網站上點擊幾下就找到了。我不必去很遠就能在首頁的文檔中找到簽名範例。
在SyncFusion網站上沒有支持數位簽名功能的API文檔。
iText 的 API 文件非常詳盡,是從每個發布的版本生成的。這是一種在網路上的其他庫中也能看到的標準外觀和感覺。搜索簽名功能找到了一些具有精彩描述的類,但同樣沒有樣本的連結。
我在 iText 網站上搜索了一個簽名樣本,但沒有找到,而是展示了幾篇宣佈新合作夥伴關係的博客文章。
每個工具提供的 API 都非常詳細,各自採取不同的方法,讓開發者可以完全訪問 PDF 文件的創建和管理。值得慶幸的是,所有的框架都有完整的自動完成提示,當你在 Visual Studio 或 Visual Studio Code 這樣提供自動完成功能的現代代碼編輯器中使用這些工具時,會提供極好的內聯文檔。
IronPDF APIs 使用简化的命令,例如 “RenderHtmlAsPdf”,使非常困难和复杂的交互变得容易,但仍然提供对内容创作和放置、安全、元数据和文档表单的深度访问。作為開發人員,這些 API "以我思考的方式" 來處理內容渲染。
IronPDF APIs 使用的名稱和术语表明您正在渲染文档或构建文档。在某些设置上的时间属性是代表毫秒的整数,而我更喜欢本机 TimeSpan 类型。最后,我希望能看到配置 API,以下是示例:
var Renderer = new IronPdf.ChromePdfRenderer(options =\> {
RenderDelay = TimeSpan.FromSeconds(1)
});
var Renderer = new IronPdf.ChromePdfRenderer(options =\> {
RenderDelay = TimeSpan.FromSeconds(1)
});
options =\> { RenderDelay = TimeSpan.FromSeconds(1) }
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: var Renderer = new IronPdf.ChromePdfRenderer(options =\> { RenderDelay = TimeSpan.FromSeconds(1) });
Dim Renderer = New IronPdf.ChromePdfRenderer(options)
SyncFusion API 非常清晰,並且對於如何與其轉換工具進行互動提供了非常描述性的控制。這裡沒有任何捷徑,所有內容都是必須的,您必須告訴它您正在使用哪種工具,沒有可用的預設值。設定非常廣泛,對於包括磁碟上的 WebKit 渲染器位置在內的所有內容都有細微的控制。
雖然在某些安裝中不需要這些額外配置,但這些配置過去曾引起了一些人的問題,SyncFusion 承諾在未來的版本中這不會成為問題。
Aspose API 非常冗長,讓我懷疑他們是否真的想讓開發人員更高效。從網站載入文件所需的配置量令人難以置信,需要10行代碼,這是SyncFusion的兩倍。 (5)其中一個例子是 Aspose 沒有提供 API 讓您指定 URL 來獲取和轉換。
iText 的 API 與 Aspose 類似,非常冗長,並允許使用不同的數據類型直接寫入文件,但是不清楚如何創建文件的部分。由於 API 的描述非常清晰,而文檔質量較低,使用 iText 工作是非常困難的。
接下來,我想測試每個工具在將 HTML 內容轉換為 PDF 時的渲染和速度能力。我已編寫了一些代碼,可以從 我的GitHub倉庫 了解更多有關我如何進行這些測試的資訊。我也 將每個結果 PDF 的副本存放在那裡 供您審核。我將測試每個產品的以下方面:
參考網站非常簡單,沒有 CSS,僅包含文本、鏈接和圖像。
這是一個簡單的三行代碼來執行,性能看起來很不錯,835毫秒。然而,當我打開 PDF 時,我發現渲染中沒有包括任何圖片,對預設配置的結果感到失望。
在稍微探索後,我了解到可以添加渲染延遲,使用這種配置,我能夠渲染包含正確圖片的 PDF。
在工具的測試版中,渲染的 PDF 中包含水印。在完全授權的版本中,這個水印則不會存在。
SyncFusion 是一次好奇而困惑的旅行。他們的文件提到幾種不同的方法來渲染和傳遞 HTML 和 PDF,這些方法有不同的版本號碼和不同的框架,需要不同的代碼和配置以及二進制工具的安裝才能正常運行。
與 IronPDF 演示一樣,SyncFusion 沒有渲染頁面的圖像,並且產生的 PDF 具有非常小的頁邊距。
在工具的測試版本中,生成的 PDF 會包含水印。在完整許可版本中,這個水印是不會出現的。
Aspose 有一套非常明確的指示來說明如何使用他們的工具。然而,根據 在他們的網站上有關將網站轉換為 PDF 的說明,他們有一個重大錯誤,導致該功能無法正常運作。此外,他們的 將網站轉換為 PDF 的線上工具 不再運作。
iText 的文件不太容易找到,我們不得不閱讀一本電子書來獲取我們需要的範例程式碼來運行這個範例。不需要任何程式碼更改,沒有額外的配置,用四行程式碼我們渲染了一個非常好看的 PDF,沒有浮水印且有良好的邊距。
使用的工具 | 速度以毫秒計算(越低越好) |
---|---|
IronPDF | 835ms |
SyncFusion | 1799ms |
Aspose | 不適用 |
iText | 2975ms |
在這個測試中,我們使用的是ESPN.com,一個包含大量CSS、圖片和JavaScript的體育網站。由於Aspose在簡單測試中沒有運作,所以我們將跳過他們。 我們將使用上次演示所用的相同程式碼來創建這些截圖,只需替換掉網站地址即可。
作為參考,以下是進行此測試時ESPN的外觀:
畫面頂部的分數和中間的遊戲狀態報告是用 JavaScript 放置的,所有定位和顏色都由 CSS3 處理。
IronPDF 渲染能夠如實複製和加載動態內容,不過看起來頁面好像是為行動裝置所渲染的,其內容元素被分成獨立的片段並排列成方格。
SyncFusion 進行了類似的「行動裝置樣式」呈現,內容以垂直方式排列。然而,我們丟失了幾張由 ESPN 網站動態加載的圖片,一些字體格式也遺失了:
在這個測試中,iText 拒絕運行並拋出了 NullReferenceException,阻止其嘗試渲染網站。
使用的工具 | 速度以毫秒計算(越低越好) |
---|---|
IronPDF | 835ms |
SyncFusion | 1799ms |
Aspose | 不適用 |
iText | 2975ms |
最終測試是根據網站生成具有表單輸入欄位的 PDF。我撰寫的簡單電子報註冊表單可以在 GitHub 儲存庫中找到,並在 Firefox 中使用 Bootstrap 5 呈現,如下所示:
注意:
State 是一個下拉選單,Phone 欄位是電話欄位,Email 是電子郵件欄位,而 Shoe Size 是數字欄位。
Iron在此測試中表現非常出色,以類似於移動設備友好的佈局快速渲染,從右上角的漢堡菜單按鈕可見一斑。在測試版本中,頁面上的水印令人煩惱,但在獲得完整許可版本後將被移除。
所有的文本框字段都被渲染為我可以互動的PDF表單字段,除了最後的單選按鈕和複選框。這些文本框不像在瀏覽器中那樣進行特定的驗證或內容強制執行。
SyncFusion 顯示的似乎是網站的完整桌面版,因為沒有漢堡菜單按鈕。表單元素顯示為螢幕上的方塊、按鈕和框,但它們都不是標準的 PDF 資料輸入欄位。雖然被浮水印遮住,頁首和頁尾的連結仍然是可點擊的。
iText 在渲染內容方面是三個框架中最快的。然而,這種速度是有代價的。它們的渲染確實提供了點擊後導航的錨標籤,但無法到達原網站。所有來自 bootstrap 的格式都丟失了,所有的表單欄位都呈現為普通的框框。
使用的工具 | 速度以毫秒計算(越低越好) |
---|---|
IronPDF | 835ms |
SyncFusion | 1799ms |
Aspose | 不適用 |
iText | 2975ms |
每個這些框架都有各自的支援能力和發布節奏。對於一個可行的、目前正在開發並成長的框架,我們希望看到有線上支援和定期發布計劃,以支持更多的PDF標準。
從 NuGet網站IronPDF 似乎每 2-4 週發佈一次版本。提供即時聊天和電子郵件支持選項。能看到一個線上論壇或者 Discord / Slack 伺服器來與支持及 IronPDF 社群的其他成員聊天會不錯。
根據 NuGet它們每週更新一次 PDF 程式庫。SyncFusion 有線上論壇和線上支援工單系統。SyncFusion 沒有線上即時聊天支援選項。
根據 NuGetAspose.PDF 每月發佈一次。他們提供免費的服務台、付費服務台以及付費諮詢。我看不到任何即時互動或社區互動的選項。
NuGet iText報告他們每2-3個月更新一次套件。他們的唯一支援方式是通過在線JIRA問題追蹤系統和“聯絡我們”表單。沒有現場互動或托管論壇。
在本文件的每個部分,我對產品進行了排名,4 為最高排名。
類別 | IronPDF | Aspose | SyncFusion | iText |
---|---|---|---|---|
發現 | 3 | 4 | 2 | 1 |
獲取 | 4 | 3 | 2 | 1 |
授權 | 3 | 2 | 4 | 1 |
相容性 | 4 | 1 | 2 | 3 |
入門 | 4 | 1 | 2 | 3 |
API | 4 | 2 | 3 | 1 |
文件資料 | 4 | 4 | 3 | 2 |
渲染網站 | 4 | 0 | 3 | 2 |
支援 | 3 | 4 | 2 | 1 |
總計 (越高越好) | 33 | 21 | 23 | 15 |
筆記:
在發現方面,由於 GitHub 上缺乏明確的樣本庫,因此 Syncfusion 排在最後,我更優先考慮在搜索引擎上找到產品,而不是在 GitHub 上找到它。
IronPDF 的獲取過程非常清晰,只需一個按鈕即可立即進入下載頁面。其他產品則需要不同程度的註冊和流程才能找到所需的庫。iText 的過程最為混亂,選項過多,最後讓人困惑。
針對授權問題,Syncfusion 的授權非常明確,而 Aspose 和 IronPDF 則有多種限制。Aspose 由於選擇過多排名第三,而 iText 因為開源/商業選項讓人困惑且需要工具來計算授權,排在最後。
在兼容性方面,根據網站上的聲明有些讓人困惑。IronPDF 提供了在各種雲端上運行的聲明,而其他工具則沒有這種聲明。需要在測試過程中進一步調查,以確定這三個工具能否在這些環境中運行。
入門方面,IronPDF 排名第一,因為他們的代碼無需任何修改即可運行。iText 需要一些小的更新,Aspose 則完全無法運行,我不得不完全重寫示例。
IronPDF 提供的 API 結構清晰,允許開發人員以非常高效的方式工作,即“給我預設值,其餘你來處理”。SyncFusion 提供了類似的方法,但開始變得冗長。Aspose 和 iText 的 API 非常冗長,且缺乏良好的文檔,使 iText 在我的評分中排在最底。
文檔評分方面,IronPDF 和 Aspose 的體驗最佳,因為它們具有相同的特徵,而 SyncFusion 和 iText 都缺少樣本或 API 文檔。SyncFusion 因其文檔網站上的詳盡內容略勝一籌。