跳至頁尾內容
PDF工具

如何在Node.js中將PDF轉換為圖像

IronPDF在HTML轉PDF轉換上表現出色,具有企業級功能,PDFSharp提供低層控制以定制佈局,QuestPDF簡化結構化文件建立,而Syncfusion、iText和Apryse提供完整的企業級解決方案,具有先進的操作能力。

在C#中生成和操作PDF(可攜式文件格式)文件是現代應用的一個常見要求,從簡單的PDF報告到複雜的企業級文件系統。 出現了許多PDF SDK,每個都針對特定用途提供不同功能,比如建立PDF編輯PDF轉換PDF

本文探討廣泛使用的C# PDF SDK:IronPDFPDFSharpQuestPDFSyncfusion PDFiTextApryse。 我們研究其優勢和限制,幫助您在專案中做出明智的決策,無論是處理ASP.NETBlazor還是MAUI應用

為什麼PDF SDK對C#應用程式很重要?

PDF生成和操作對於開票、報告和存檔網頁內容至關重要。 處理PDF涉及精准格式化、嵌入圖像、支持不同PDF版本,以及進行複雜編輯操作,如合併PDF新增水印應用數位簽章。 選擇合適的PDF SDK會顯著影響性能、可擴展性和在.NET環境中的整合便利性,尤其是在部署到雲平台時。

選擇應考慮哪些因素?

  • 易用性: SDK是否提供簡單的API還是過於複雜?
  • 性能: 程式庫處理大文件或複雜操作的效果如何?
  • 功能: SDK是否支持HTML轉PDF轉換、加密、填充表單或數位簽章等功能? 它能否從頭生成PDF文件? 它如何處理如能夠結合多個PDF文件等任務?
  • 成本: SDK是免費的、開源的還是商業的? 授權條款是什麼?
  • 支持: 是否有足夠的社群或商業支持來排除故障?

  • 易用性:簡單API對比複雜的實施需求
  • 性能:有效處理大文件和複雜操作
  • 功能:HTML轉換、加密、填充表單和文件生成
  • 成本:免費、開源或商業授權模式
  • 支持:社群或商業支持的可用性

您的應用需求在不同部署場景中如WindowsLinuxmacOSDocker容器中將決定最佳選擇。

什麼讓IronPDF脫穎而出?

IronPDF是一個多功能的.NET PDF程式庫,用於C#。 其主要優勢在於HTML轉PDF轉換,具有廣泛特性,適用於小型專案及企業應用。 該程式庫管理復雜性,同時提供可靠的安全功能,支持PDF/A合規PDF/UA可存取性

  • HTML轉PDF轉換: IronPDF在轉換HTML內容(包括CSS和JavaScript)到高質量PDF方面表現優異。 此功能對於基於Web的報告、動態發票生成或以PDF格式保存網頁內容特別有用。 使用者還可以將PDF文件轉回HTML,甚至是圖像格式,只需幾行程式碼。
  • PDF編輯和操作: 除了簡單的PDF建立,IronPDF還允許廣泛的文件編輯任務,如能夠修改PDF文件、合併多個PDF、拆分它們和新增註釋。 開發者還可以插入水印修改元資料、以及從PDF中提取文字和圖像,賦予它強大的文件管理能力。
  • 安全功能: 對於需要處理敏感文件的大型團隊和企業來說,IronPDF提供了強大的安全選項。 可以使用密碼保護對PDF進行加密,確保只有授權使用者可以存取或修改PDF文件。 此外,可以在文件中新增數位簽章以確保內容的真實性。
  • 填表與處理: IronPDF支持互動式PDF表單,允許開發者程式化建立和填充PDF表單。 這對於需要自動化表單處理的應用如合約、問卷或客戶表單非常理想。
  • 可擴展性與企業使用: IronPDF構建以支持擴展,使其成為大型團隊在企業級應用程式上工作的理想選擇。 其性能優化以處理大量的PDF生產和操作,意味著其能夠無縫整合到高流量環境中,如SaaS平台、自動報告系統或電子商務應用中。 團隊還可以利用批量處理來同時轉換或編輯多個PDF,提高效率。
  • 全面的API與文件: IronPDF的API直觀且文件記錄完備,使不同技能水平的開發者更容易將PDF功能實施到他們的應用程式中。 對於大型團隊,這減少了學習工具的時間,這是保持開發生命週期中生產力的一個關鍵優勢。 並提供影片教程、操作指南、演示和程式碼範例。
  • 跨平台支持: IronPDF支持多個平台,包括.NET Core、.NET 5/6及.NET Standard,適合於廣泛的應用開發。 無論您是在為Windows、Linux或macOS開發,IronPDF都能無縫整合到您的工作流程中。

優勢: IronPDF能處理HTML和複雜佈局而不犧牲準確性,這使其成為Web應用程式的出色工具,特別是涉及報告、發票或從網站動態生成的內容。 它還非常重視PDF的安全性,所以使用IronPDF您將擁有全面控制PDF的加密,您可以編輯PDF文件的權限,編輯元資料本身,並應用數位簽章。

劣勢: 儘管功能強大,但IronPDF的價格可能會對小團隊或從事非商業專案的個人造成阻礙,因為許多高級功能都需要付費許可。

最佳使用案例: 無論您是在構建一個小型應用程式來生成報告還是企業級系統以進行大規模PDF處理,IronPDF都提供所有必要工具,能有效處理各種PDF任務。 它獨特的功能集,結合強大的安全功能和易用性,使其特別適合於需要生成、編輯或保護大量PDF、且要求高性能的專案。

劣勢:價格可能會阻礙小團隊或非商業項目。 高級功能需要付費授權。 針對您的具體需求考慮許可選項

何時應使用IronPDF?

最佳使用案例:IronPDF適合需要有效PDF生成、編輯或安全性規模應用的應用。 應用程式可以立即使用這些功能進行報告生成或企業文件處理。 該程式庫在Blazor ServersMAUI應用Azure部署ASP.NET MVCRazor Pages中表現出色。

  • 直接PDF建立: PDFSharp允許開發者從頭建立PDF文件,通過存取原始PDF物件如頁面、圖形、字體和文字。 開發者可以為每個元素指定精確的位置和尺寸,這使得它非常適合需要像素精確佈局的任務。
  • 繪圖API: PDFSharp包括一個強大的繪圖API,允許開發者向PDF中新增文字、圖像和形狀(如線條和矩形)。 這使得它適合直接在文件中建立圖表、技術圖紙或圖形報告。
  • 字體和文字管理: 該程式庫提供了強大的字體管理,支持標準字體以及自定義字體嵌入。 它還允許靈活的文字格式化選項,包括不同的字體風格、大小和顏色,使得容易控制文字內容的外觀。
  • 基本PDF操作: PDFSharp提供了一些基本的PDF操作功能,如合併多個PDF文件為一個,拆分文件為單獨的文件,或提取內容如圖像和文字。 然而,它缺乏更高級的操作功能,如填充表單或數位簽章。
  • 不支持HTML轉PDF轉換: 與IronPDF不同,PDFSharp不原生支持將HTML內容轉換為PDF。 這一限制意味著它更適合於開發者程式化生成PDF而不是轉換現有的網頁內容的使用情況。
  • 開源靈活性: PDFSharp是開源的,且在MIT許可下免費,允許開發者根據需要修改和分發程式碼。 這使其成為小型團隊或預算有限的專案的成本效益選擇。 然而,缺乏專門的商業支持可能是大型組織的限制。

優勢: 該程式庫提供了對佈局的高度控制,對於需要對內容佈局精確的應用程式非常完美。 其開源性質也使其對預算有限的專案來說是易接觸的。

劣勢: PDFSharp缺乏對HTML轉PDF轉換的內建支持,這限制了其在依賴於渲染網頁內容的應用中的實用性。 此外,雖然它提供了基本的PDF操作功能,但在高級功能如填充表單、數位簽章或複雜註釋方面卻有所短缺。 其低級API對於喜歡高級抽象的開發者來說也可能構成學習曲線,而缺乏商業支持可能是需要專門援助的大型組織的一個缺點。

最佳使用案例: PDFSharp適合於需要對PDF佈局進行完全控制且不要求HTML轉換的專案,如技術圖紙、自定義報告或靜態內容建立。

PDFSharp如何處理PDF生成?

PDFSharp是一個開源程式庫,提供低層PDF建立控制。 與IronPDF的網頁內容轉換不同,PDFSharp通過直接使用自定義紙張尺寸精確佈局程式化生成PDF。

PDFSharp提供了哪些功能?

  • 基於佈局的文件建立: 與PDFSharp等程式庫不同,QuestPDF通過專注於高級文件佈局來抽象PDF生成的複雜性。 開發者可以輕鬆定義頁眉、頁腳和內容區,而QuestPDF自動處理分頁和內容流。
  • 文件構建的流暢API: QuestPDF的API遵循流暢設計模式,使得組合文件變得更易讀和結構化。 此設計允許開發者快速建立複雜的多頁報告、發票和其他結構化文件,無需擔心手動佈局定位。
  • 表格和網格佈局: QuestPDF簡化了表格和基於網格的佈局建立,這是像發票、財務報告或資料摘要等結構化文件的一個常見要求。 它自動管理跨多頁的表格的行高、列寬和分頁。
  • SkiaSharp渲染引擎: QuestPDF利用強大的SkiaSharp渲染引擎,確保文件快速準確地呈現。 這種性能提升對於生成包含多頁或高解析度圖像的複雜文件特別重要。
  • 跨平台相容性: 該程式庫完全相容.NET Core、.NET 5/6及.NET Standard,這意味著它可以跨不同操作系統使用,包括Windows、Linux和macOS。
  • 開源和免費: QuestPDF完全是開源的,並在MIT許可下分發,允許其在商業和非商業應用中自由使用。

優勢: QuestPDF簡化了結構化PDF的構建過程,自動處理佈局和分頁。 其使用SkiaSharp確保渲染快速且高效。

劣勢: 雖然QuestPDF簡化了文件佈局和建立,但它不支持HTML轉PDF轉換,使其在基於網頁內容的應用中變得不太通用。 其專注於結構化文件建立可能會限制專案需要複雜、自由格式設計的靈活性。 作為一個相對新的程式庫,它可能尚未具備更成熟程式庫所具備的廣泛社群支持和資源,這可能在故障排除或尋找最佳實踐時帶來挑戰。

最佳使用案例: QuestPDF非常適合需要生成結構化文件如發票、報告或多頁表單的開發者。 其基於佈局的API和自動分頁使其成為需要乾淨、專業外觀PDF的商業應用的一個不錯選擇。

什麼時候是PDFSharp的最佳選擇?

最佳使用案例:當您需要完全掌控佈局且不需要HTML轉換時,PDFSharp表現出色。 考慮這點用於技術草圖、自定義報告或靜態內容建立。 您的應用程式將獲得精確位置控制,但需要付出便利功能的代價。

QuestPDF的PDF建立方法是怎樣的?

  • HTML轉PDF轉換: 與IronPDF類似,Syncfusion PDF為將HTML內容轉換為PDF提供了強大的支持。 確保HTML、CSS和JavaScript的準確呈現,這對於需要將網頁或動態內容轉換為PDF的Web應用非常有用。
  • 操作PDF文件: Syncfusion PDF允許進行廣泛的文件操作任務,如合併和拆分PDF、新增註釋、插入書簽和編輯元資料。 它還支持從現有PDF中提取圖像和文字。
  • PDF表單: Syncfusion提供了全面支持互動式PDF表單的功能。 開發者可以程式化填充表單欄位、提取表單資料,並建立使用者可以數位填寫的表單。 此功能對於處理合約、調查或客戶資料收集的應用非常有用。
  • 加密和數位簽章: 安全性是Syncfusion PDF的一個關鍵功能。 該程式庫允許開發者對其PDF文件進行加密,確保它們受到未經授權的存取保護。 它還支持數位簽章,允許使用者以電子方式簽署文件以供驗證和法律目的。
  • PDF轉圖像和OCR: 除了建立PDF,Syncfusion PDF還可以將PDF頁面轉換為高質量圖像。 它整合了OCR(光學字元識別)功能,使開發者能夠從掃描的文件或嵌入在PDF中的圖像中提取文字。
  • 企業級可擴展性: Syncfusion PDF設計用於企業使用,其高性能功能允許其處理大批量PDF處理。 其可擴展性使其成為需要高效處理成千上萬個PDF的應用程式的理想選擇,如文件管理系統、報告引擎或雲服務。

優勢: Syncfusion PDF提供了廣泛的功能,使其適合需要高性能和先進文件操作的企業應用。

劣勢: Syncfusion PDF是較大工具套件的一部分,這可能會導致相較於獨立程式庫的更高的成本,特別是對於小團隊或個別開發者而言。 雖然它提供了豐富的功能,但由於其複雜性,對於那些只需要基本功能的人來說,該程式庫可能會顯得過於雜亂。 此外,對初學者來說,文件有時可能不那麼清晰,從而導致更陡峭的學習曲線。

最佳使用案例: Syncfusion PDF非常適合需要高級PDF操作功能、安全性和可擴展性的企業級應用程式。 它對於需要安全且高效處理大量PDF的企業尤其有用。

優勢:簡化結構化PDF構建,處理流暢的布局。 SkiaSharp 保證有效的呈現。 實現自動處理分頁和內容流。

劣勢:不支持HTML到PDF的限制了網頁內容的多功能性。 結構化文件重心可能限制設計靈活性。 較新的程式庫缺乏廣泛的社區資源。

您何時應考慮QuestPDF?

  • 高級文件工作流程: iText是C#最豐富功能的PDF程式庫之一。 它支持複雜的工作流程,如填充和從PDF表單中提取資料、新增水印、註釋和書籤,以及加密PDF以進行安全文件處理。
  • 操作PDF文件: 開發者可以通過合併、拆分或重新排列頁面來修改現有的PDF文件。 iText還允許從現有PDF中提取和操作文字、圖像和元資料,使其成為需要索引或分類文件內容的應用的理想選擇。
  • PDF表單和交互元素: iText為建立和操作PDF表單提供了豐富的支持。 開發者可以生成具有文字欄位、複選框和按鈕的交互式表單,並批量程式化填寫表單欄位。
  • 數位簽章和加密: 安全性是iText的一個優點。 它允許開發者加密其PDF文件,數字簽署文件並驗證簽名,確保敏感資訊在傳輸過程中受到保護。
  • 支持多個PDF版本: iText支持廣泛的PDF版本,包括用於長期存檔的PDF/A和用於列印的PDF/X。 這使其成為法律、金融和出版等行業的良好選擇,這些行業對特定PDF標準的遵從性至關重要。

優勢: iText非常適合需要對PDF文件和安全功能進行詳細控制的企業應用。

劣勢: iText的許可模式可能受到限制,因為它在AGPL許可下免費使用,這要求任何使用它的應用程式也必須是開源的。 這一限制可能對專有應用構成重大挑戰,需要購買商業許可,這可能會很昂貴。此外,雖然它提供了豐富的功能,但其API可能會很複雜,導致對於對該程式庫不熟悉的開發者增加了學習曲線。 當處理非常大的PDF或執行複雜的工作流程時,性能可能也會有所不同。

最佳使用案例: iText在需要高級文件處理的專案中是一個強有力的選擇,如合約、法律文件和企業級表單處理。

Syncfusion PDFSyncfusion Essential Studio的一部分,具有可靠的PDF建立和操作功能。 該程式庫提供專業的性能,具有廣泛的功能,能夠完成複雜的文件工作流程。

Syncfusion提供哪些企業功能?

  • HTML到PDF轉換:準確的HTML、CSS和JavaScript渲染
  • PDF操作:合併、拆分、註釋和編輯元資料
  • PDF表單:適用於數位工作流程的完整互動表單支持
  • 加密和數位簽章:專業安全功能
  • PDF到圖像和OCR:將頁面轉換並提取文字
  • 專業可擴展性:有效處理大批量

  • 多格式轉換: Apryse能將各種格式如Word、Excel、PowerPoint和HTML轉換為PDF格式(及反向),對於需要無縫文件格式轉換的企業來說是寶貴的工具。
  • 光學字元識別(OCR): Apryse的一個突出特點是其OCR能力,允許開發者從掃描的圖像和文件中提取並將文字轉換為可編輯和可搜索的格式。 這一功能對於如文件數位化或法律證據處理等工作流程自動化至關重要。
  • 高級文件編輯: Apryse提供強大的編輯工具集,包括能夠編輯敏感資訊,對比文件版本和調整頁面佈局。 它還可以從現有的PDF中提取圖像和文字,賦予使用者對文件處理的每一個方面的控制。
  • 註釋與協作: 使用者可以新增註釋、評論、高亮和標記,使其成為團隊協作或文件審查的理想選擇。
  • 數位簽章和加密: 像IronPDF一樣,Apryse支持行業標準的加密和數位簽章,確保敏感文件不會被未經授權存取和篡改。
  • 跨平台和雲整合: Apryse支持.NET、Java和網頁應用的跨平台開發。 其可擴展性使其在需要高性能和可靠性的SaaS平台、文件管理系統和基於雲的應用中特別有用。

優勢: Apryse是針對企業使用案例而設計的高性能解決方案,當需要可擴展性和先進的PDF操作時具有特別強的優勢。

劣勢: Apryse是一個高級解決方案,其許可成本可能是一項重大的投資,特別是對於小型企業或初創公司來說。 雖然它提供了全面的功能集,但這可能導致增加了複雜性,使開發者難以完全駕馭API。 陡峭的學習曲線可能需要比簡單的程式庫更長的實現時間。 此外,雖然Apryse支持廣泛的平台,但這種多樣性可能會在某些情況下影響性能,特別是在處理非常大的文件或進行廣泛的處理任務時。

最佳使用案例: Apryse的能力使其非常適合需要先進PDF建立、OCR、多格式轉換和安全文件工作流程的企業級應用。 它在醫療、法律和金融等部門中表現出色,那裡文件安全和合規性至關重要。

最佳使用案例:Syncfusion在需要高級操作和安全性的企業應用中表現出色。 您的應用程式將獲得可擴展性,以便安全地處理大量PDF。 考慮這點作為業務關鍵文件工作流程。

iText提供了哪些高級功能?

iText因其先進的PDF操作能力而受歡迎。 雖然它可以從頭建立PDF,但其強項在於處理如填表、註釋和加密這樣的複雜工作流程。

iText支持哪些複雜的工作流程?

  • 高級文件工作流程:包括表單和水印的複雜工作流程
  • PDF操作:通過合併和拆分修改文件
  • PDF表單和交互元素:詳盡的表單建立能力
  • 數位簽章和加密:強大的安全實施
  • 支持多個PDF版本:PDF/A存檔和PDF/X列印

iText的許可如何影響您的專案?

優勢:非常適合需要詳細控制的企業應用。 實現全面處理安全功能。

劣勢:AGPL許可要求開源應用,除非購買商業許可。 複雜的API創造了更高的學習曲線。 大PDF處理性能差異。

何時應選擇iText?

最佳使用案例:iText適合如合約和法律文件的高級文件處理。 您的應用程式將從對PDF元素的詳細控制中受益。 對於專有專案考慮商業授權。

// Example: Create a PDF with iTextSharp
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.IO;

Document document = new Document(PageSize.A4, 25, 25, 30, 30);
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("output.pdf", FileMode.Create));

// Add metadata
document.AddAuthor("Your Name");
document.AddCreator("iTextSharp Example");
document.AddKeywords("PDF, iTextSharp, C#");
document.AddSubject("Creating PDF with iTextSharp");
document.AddTitle("Sample PDF");

document.Open();

// Add content
Font font = FontFactory.GetFont(FontFactory.HELVETICA, 12);
Paragraph para = new Paragraph("Hello World from iTextSharp!", font);
document.Add(para);

// Add a table
PdfPTable table = new PdfPTable(3);
table.AddCell("Column 1");
table.AddCell("Column 2");
table.AddCell("Column 3");
document.Add(table);

document.Close();
// Example: Create a PDF with iTextSharp
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.IO;

Document document = new Document(PageSize.A4, 25, 25, 30, 30);
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("output.pdf", FileMode.Create));

// Add metadata
document.AddAuthor("Your Name");
document.AddCreator("iTextSharp Example");
document.AddKeywords("PDF, iTextSharp, C#");
document.AddSubject("Creating PDF with iTextSharp");
document.AddTitle("Sample PDF");

document.Open();

// Add content
Font font = FontFactory.GetFont(FontFactory.HELVETICA, 12);
Paragraph para = new Paragraph("Hello World from iTextSharp!", font);
document.Add(para);

// Add a table
PdfPTable table = new PdfPTable(3);
table.AddCell("Column 1");
table.AddCell("Column 2");
table.AddCell("Column 3");
document.Add(table);

document.Close();
' Example: Create a PDF with iTextSharp
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports System.IO

Dim document As New Document(PageSize.A4, 25, 25, 30, 30)
Dim writer As PdfWriter = PdfWriter.GetInstance(document, New FileStream("output.pdf", FileMode.Create))

' Add metadata
document.AddAuthor("Your Name")
document.AddCreator("iTextSharp Example")
document.AddKeywords("PDF, iTextSharp, C#")
document.AddSubject("Creating PDF with iTextSharp")
document.AddTitle("Sample PDF")

document.Open()

' Add content
Dim font As Font = FontFactory.GetFont(FontFactory.HELVETICA, 12)
Dim para As New Paragraph("Hello World from iTextSharp!", font)
document.Add(para)

' Add a table
Dim table As New PdfPTable(3)
table.AddCell("Column 1")
table.AddCell("Column 2")
table.AddCell("Column 3")
document.Add(table)

document.Close()
$vbLabelText   $csharpLabel

為什麼選擇Apryse進行複雜的PDF工作流?

Apryse(前稱PDFTron)是一個高級的SDK,提供完整的PDF建立、操作和轉換。 該程式庫在處理OCR、文件比較和高保真渲染等複雜工作流程方面表現出色。

是什麼讓Apryse成為高級解決方案?

  • 多格式轉換:將Office文件和HTML轉換為PDF
  • 光學字元識別:從掃描後的圖像中提取文字
  • 高級文件編輯:編輯資訊和調整佈局
  • 註釋和協作:新增完整的標記功能
  • 數位簽章和加密:行業標準的文件保護
  • 跨平台和雲整合:支持多個平台

為什麼Apryse值得這一高級成本?

優勢:具有可擴展性的高性能企業解決方案。 該程式庫有效管理複雜渲染場景的高級操作。

劣勢:高級許可對小型企業成本顯著。 完整功能增加複雜性。 廣泛處理可能影響性能。

何時是Apryse的最佳選擇?

最佳使用案例:Apryse適合需要高級功能如OCR和多格式轉換的企業應用。 您的應用程式獲得完整的文件處理能力。 考慮這點於醫療、法律和金融行業。

// Example: Advanced PDF processing with error handling
using IronPdf;
using System;

try 
{
    // Configure advanced rendering options
    var renderer = new ChromePdfRenderer
    {
        RenderingOptions = new ChromePdfRenderOptions
        {
            EnableJavaScript = true,
            RenderDelay = 500, // Wait for dynamic content
            CssMediaType = PdfCssMediaType.Print,
            PrintHtmlBackgrounds = true,
            CreatePdfFormsFromHtml = true
        }
    };

    // Convert complex HTML with charts
    var html = @"
    <html>
    <head>
        <script src='___PROTECTED_URL_43___></script>
    </head>
    <body>
        <canvas id='myChart'></canvas>
        <script>
            // Chart.js code here
        </script>
    </body>
    </html>";

    var pdf = renderer.RenderHtmlAsPdf(html);

    // Add security
    pdf.SecuritySettings.SetPassword("user_password", "owner_password");
    pdf.SecuritySettings.AllowUserCopyPasteContent = false;
    pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint;

    // Save with compression
    pdf.CompressImages(90);
    pdf.SaveAs("secure_chart.pdf");
}
catch (Exception ex)
{
    Console.WriteLine($"PDF generation failed: {ex.Message}");
}
// Example: Advanced PDF processing with error handling
using IronPdf;
using System;

try 
{
    // Configure advanced rendering options
    var renderer = new ChromePdfRenderer
    {
        RenderingOptions = new ChromePdfRenderOptions
        {
            EnableJavaScript = true,
            RenderDelay = 500, // Wait for dynamic content
            CssMediaType = PdfCssMediaType.Print,
            PrintHtmlBackgrounds = true,
            CreatePdfFormsFromHtml = true
        }
    };

    // Convert complex HTML with charts
    var html = @"
    <html>
    <head>
        <script src='___PROTECTED_URL_43___></script>
    </head>
    <body>
        <canvas id='myChart'></canvas>
        <script>
            // Chart.js code here
        </script>
    </body>
    </html>";

    var pdf = renderer.RenderHtmlAsPdf(html);

    // Add security
    pdf.SecuritySettings.SetPassword("user_password", "owner_password");
    pdf.SecuritySettings.AllowUserCopyPasteContent = false;
    pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint;

    // Save with compression
    pdf.CompressImages(90);
    pdf.SaveAs("secure_chart.pdf");
}
catch (Exception ex)
{
    Console.WriteLine($"PDF generation failed: {ex.Message}");
}
Imports IronPdf
Imports System

Try
    ' Configure advanced rendering options
    Dim renderer As New ChromePdfRenderer With {
        .RenderingOptions = New ChromePdfRenderOptions With {
            .EnableJavaScript = True,
            .RenderDelay = 500, ' Wait for dynamic content
            .CssMediaType = PdfCssMediaType.Print,
            .PrintHtmlBackgrounds = True,
            .CreatePdfFormsFromHtml = True
        }
    }

    ' Convert complex HTML with charts
    Dim html As String = "
    <html>
    <head>
        <script src='___PROTECTED_URL_43___'></script>
    </head>
    <body>
        <canvas id='myChart'></canvas>
        <script>
            // Chart.js code here
        </script>
    </body>
    </html>"

    Dim pdf = renderer.RenderHtmlAsPdf(html)

    ' Add security
    pdf.SecuritySettings.SetPassword("user_password", "owner_password")
    pdf.SecuritySettings.AllowUserCopyPasteContent = False
    pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint

    ' Save with compression
    pdf.CompressImages(90)
    pdf.SaveAs("secure_chart.pdf")
Catch ex As Exception
    Console.WriteLine($"PDF generation failed: {ex.Message}")
End Try
$vbLabelText   $csharpLabel

您應選擇哪種PDF SDK?

選擇合適的PDF SDK取決於您的具體應用需求。 PDFSharpQuestPDF為基本建立和佈局控制提供免費替代方案,但缺乏Web內容轉換。 Syncfusion PDFiTextApryse提供企業特性,適合大規模項目,但成本更高。根據項目複雜性、預算和所需的PDF功能來決定。

IronPDF在HTML到PDF轉換、先進操作或安全PDF處理方面表現出色。 該程式庫為您管理複雜性,同時通過使用者友好的API提供廣泛的功能。 您的應用程式可以立即將此功能集用於小型專案和企業部署。 性能優化確保對於顯著的處理需求的高質量PDF生成具有效率。 完整的PDF建立教程PDF轉換教程可快速實現。

考慮以下程式碼範例,親身體驗IronPDF的功能與免費試用。 該實作處理各種部署方案,同時提供靈活性、安全性和易用性。 在您的專案中測試以評估需求並簡化PDF生成。 使用IronPDF改善您的應用程式!

請注意PDFSharp、QuestPDF、Syncfusion PDF、iText和Apryse是其各自所有者的註冊商標。 本網站與PDFSharp、QuestPDF、Syncfusion PDF、iText或Apryse無關、未經其認可或贊助。 所有產品名稱、徽標和品牌均為其各自所有者的財產。 比較僅供資訊參考,並反映了撰寫時的公開可用資訊。

常見問題

如何在C#中將HTML轉換為PDF?

您可以使用IronPDF的RenderHtmlAsPdf方法將HTML字串轉換成PDF。也可以使用RenderHtmlFileAsPdf將HTML文件轉換為PDF。

選擇 PDF SDK 時應考慮哪些關鍵因素?

選擇 PDF SDK 時,應考慮易用性、性能、功能(如 HTML 到 PDF 的轉換、加密和填寫表單)、成本和提供的支援級別等因素。這些因素將有助於確保 SDK 與您的專案需求一致。

IronPDF 在 C# 的 PDF 任務中是一個多功能的選擇的原因是什麼?

IronPDF 的多功能性在於其能有效地將 HTML 轉換為 PDF、擁有強大的安全功能、廣泛的 PDF 編輯能力,並具備使用者友好的 API,使其適合小型和大型應用程式。

IronPDF 的成本如何影響較小的團隊或個別開發者?

IronPDF 的成本可能對於較小的團隊或個別開發者來說是一種限制,因為許多高級功能只有通過付費授權才能使用,可能不適用於非商業專案。

為什麼開發者可能選擇 PDFSharp 而不是其他 PDF SDK?

開發者可能選擇 PDFSharp 是因為其開源性質,允許對 PDF 建立進行低階控制和精確布局管理。然而,它不支援 HTML 到 PDF 的轉換,這可能限制其在基於 Web 的應用中的使用。

QuestPDF 最適合哪種型別的文件?

QuestPDF 最適合生成結構化文件,如發票、報告或多頁表單,因為其基於佈局的 API 和自動分頁功能使其成為商業應用的理想選擇。

Syncfusion PDF 提供哪些高級功能?

Syncfusion PDF 提供諸如 HTML 到 PDF 轉換、PDF 操作、互動式表單、加密、數位簽章和 PDF 到圖像轉換(含 OCR)等高級功能,滿足企業級需求。

iTextSharp 對於專有應用的潛在許可問題是什麼?

iTextSharp 的 AGPL 授權要求使用該軟體的應用也須開源,這可能不適合專有應用。為避免此情況,需要購買商業授權,這可能會很昂貴。

是什麼使得 Apryse 適合用於複雜的企業應用?

Apryse 適合用於複雜的企業應用,因為其具有多格式轉換、OCR、先進的文件編輯、註釋和數位簽章等全面功能,支持安全且複雜的文件工作流。

推薦哪種 PDF SDK 用於小型項目和企業應用?

IronPDF 被推薦用於小型項目和企業應用,因為其具有包括文件編輯、安全功能和使用者友好 API 的廣泛能力,提供最佳化性能以生成高質量的 PDF。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話