使用 IRONPDF

C# 生成 PDF 7 個庫比較(免費和付費工具)

C# 生成 PDF 的功能對許多現代應用程式來說至關重要,從創建報告到開票系統。 在本文中,我們將探討使用 C# 生成PDF文件的六種流行方法,重點介紹基於代碼的庫,例如IronPDF,以及線上 API 和工具。 無論您是需要在網頁應用程式中動態生成 PDF 文件,還是僅僅從現有文件創建 PDF 文件,這些工具都能滿足您的需求。

1. IronPDF

IronPDF 是一個高級的 .NET PDF 庫,專為需要高品質 HTML 到 PDF 文件轉換的開發人員設計。 IronPDF 使用基於 Chromium 的渲染引擎來確保精確的轉換,這使其成為希望將 HTML 頁面或基於網頁的報告轉換為 C# 中 PDF 文件的網絡應用程序的理想選擇。 這個工具以其處理現有 PDF 文件的強大功能而聞名,並提供編輯、合併或分割 PDF 的功能。

IronPDF 通過 NuGet 套件管理器輕鬆整合到 C# 專案中,只需幾行程式碼即可開始生成 PDF 文件。 它是一個多功能工具,適用於動態 HTML 內容和伺服器生成的 PDF 文件輸出。

主要功能

  • HTML 轉換為 PDF:IronPDF 擅長將複雜的 HTML 頁面直接轉換為 PDF,並支持 JavaScript 執行和現代 CSS。 它使用基於Chromium的渲染引擎,確保輸出結果看起來與您在網頁瀏覽器中所看到的相同。
  • PDF 操作:IronPDF 允許您輕鬆合併、分割和修改現有的 PDF 文件。
  • 高級樣式選項:IronPDF 支援外部樣式表、自訂字體和 JavaScript,讓您能夠製作高度樣式化的文件。 它非常適合用於發票、報告和基於網頁的內容。
  • 安全功能:IronPDF 提供了添加密碼保護、數位簽名以及設置權限以限制打印、複製或編輯 PDF 等操作的功能。
  • 表單處理: IronPDF允許開發人員以程式方式創建、填寫和讀取PDF表單,這使其非常適合需要以PDF格式接收用戶輸入的應用程式。
  • NuGet 套件管理器:透過 Visual Studio 中的套件管理器主控台輕鬆安裝和管理。

範例程式碼

using IronPdf;
class Program
{
    static void Main()
    {
        string html = "<h1>Hello, World!</h1><p>This PDF is generated from HTML.</p>";
        ChromePdfRenderer renderer = new ChromePdfRenderer(); // Create an instance of ChromePdfRenderer
        PdfDocument pdf = renderer.RenderHtmlAsPdf(html); // Render the HTML as a PDF document
        pdf.SaveAs("Generated.pdf"); // Save the PDF to a specified file
    }
}
using IronPdf;
class Program
{
    static void Main()
    {
        string html = "<h1>Hello, World!</h1><p>This PDF is generated from HTML.</p>";
        ChromePdfRenderer renderer = new ChromePdfRenderer(); // Create an instance of ChromePdfRenderer
        PdfDocument pdf = renderer.RenderHtmlAsPdf(html); // Render the HTML as a PDF document
        pdf.SaveAs("Generated.pdf"); // Save the PDF to a specified file
    }
}
Imports IronPdf
Friend Class Program
	Shared Sub Main()
		Dim html As String = "<h1>Hello, World!</h1><p>This PDF is generated from HTML.</p>"
		Dim renderer As New ChromePdfRenderer() ' Create an instance of ChromePdfRenderer
		Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html) ' Render the HTML as a PDF document
		pdf.SaveAs("Generated.pdf") ' Save the PDF to a specified file
	End Sub
End Class
$vbLabelText   $csharpLabel
  1. 命名空間匯入using IronPdf; 匯入 IronPDF 函式庫以存取其類別和方法。

  2. HTML 字串:變數 HTML 包含要轉換為 PDF 的 HTML 內容。

  3. 渲染器實例new ChromePdfRenderer(); 創建一個 HtmlToPdf 類的實例,該類提供將 HTML 內容渲染為 PDF 格式的方法。

  4. 渲染 PDFPdfDocument PDF = renderer.RenderHtmlAsPdf(html); 將 HTML 字串轉換為 PDF 文件。

  5. 儲存 PDFpdf.SaveAs("Generated.pdf"); 將生成的 PDF 儲存到指定的檔案路徑。

優點

  • 卓越的網頁內容呈現質量。
  • 強大的表單、超連結和書籤支援。

缺點

  • 授權費用可能是較大型項目的考量因素。
  • 更高級的功能可能需要更深入的學習。

2. iTextSharp

C# 生成 PDF 7 種庫比較(免費和付費工具):圖 2

iTextSharp 是一個成熟的 .NET PDF 庫,提供廣泛的功能來創建和編輯 PDF 文件。 它廣泛應用於金融和法律等行業,這些行業需要對文件進行客製化和安全保護。 iTextSharp 允許您從頭開始創建 PDF 檔案、填寫表單及修改 PDF 檔案,提供對文件內容的廣泛控制。 它特別適用於需要生成具有精確佈局和動態數據的 PDF 檔的企業應用程式,例如發票或合約。

主要功能

  • 完整的 PDF 創建功能:iTextSharp 讓開發人員能夠輕鬆從頭到尾在 C# 中創建 PDF 文件,並添加文本、圖片、表格和向量圖形。 它提供對文件佈局的完全控制,包括定義頁面尺寸、邊距和元數據的功能。
  • 表單填寫:iTextSharp 的一大優勢是其處理 PDF 表單(AcroForms)的能力。 您可以創建具有各種輸入欄位的表單,並在稍後以程式方式填寫,這在自動化文件生成工作流程中非常有用。
  • XML 到 PDF 轉換:iTextSharp 對使用 XFA (XML Forms Architecture) 的 XML 數據轉換為 PDF 提供強大的支援。 這在需要將 XML 數據格式化為標準表單或報表的行業中尤為重要。
  • PDF安全性:iTextSharp 包含先進功能,如新增加密、數位簽名和浮水印,以確保文件真實性並保護敏感數據。
  • 文字提取與操作:您可以從現有的 PDF 中提取文字,重新排列文件內容或操作頁面元素,這對於後處理文件或從複雜的 PDF 生成摘要報告非常有用。

範例程式碼

using System;
using System.Collections.Generic;
using System.Data.Entity.Core.Mapping;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.tool.xml;
using Voodoo;
namespace Helpers
{
    public class PdfGenerator
    {
        public static Byte[] GeneratePdfFromFragment(string htmlFragment)
        {
            var html = string.Format(@"
            <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
            <head>
            <style type='text/css'>
            table,td {{border: 1px solid black;}}
            div {{ white-space: nowrap; padding: 2px;}}
            table{{ border-collapse: collapse; width: 100%; empty-cells: show;}}
            body table {{font-size: 50%;}}
            th {{width:500px; height: 28px;}}
            td {{width:300px; height: 28px;}}
            </style>
            </head><body>{0}</body></html>", htmlFragment);
          return generate(html);
        }
        public static Byte[] GeneratePdfFromPage(string htmlPage)
        {
            return generate(htmlPage);
        }
        private static Byte[] generate (string html)
        {
            using (var memoryStream = new MemoryStream())
            {
                var pdfDocument = new Document(PageSize.LETTER);
                var pdfWriter = PdfWriter.GetInstance(pdfDocument, memoryStream);
                pdfDocument.Open();
                using (var fw = new StringReader(html))
                {                    
                    XMLWorkerHelper.GetInstance().ParseXHtml(pdfWriter, pdfDocument, fw);
                    pdfDocument.Close();
                    fw.Close();
                }
                return memoryStream.ToArray();
            }
        }
    }
}
using System;
using System.Collections.Generic;
using System.Data.Entity.Core.Mapping;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.tool.xml;
using Voodoo;
namespace Helpers
{
    public class PdfGenerator
    {
        public static Byte[] GeneratePdfFromFragment(string htmlFragment)
        {
            var html = string.Format(@"
            <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
            <head>
            <style type='text/css'>
            table,td {{border: 1px solid black;}}
            div {{ white-space: nowrap; padding: 2px;}}
            table{{ border-collapse: collapse; width: 100%; empty-cells: show;}}
            body table {{font-size: 50%;}}
            th {{width:500px; height: 28px;}}
            td {{width:300px; height: 28px;}}
            </style>
            </head><body>{0}</body></html>", htmlFragment);
          return generate(html);
        }
        public static Byte[] GeneratePdfFromPage(string htmlPage)
        {
            return generate(htmlPage);
        }
        private static Byte[] generate (string html)
        {
            using (var memoryStream = new MemoryStream())
            {
                var pdfDocument = new Document(PageSize.LETTER);
                var pdfWriter = PdfWriter.GetInstance(pdfDocument, memoryStream);
                pdfDocument.Open();
                using (var fw = new StringReader(html))
                {                    
                    XMLWorkerHelper.GetInstance().ParseXHtml(pdfWriter, pdfDocument, fw);
                    pdfDocument.Close();
                    fw.Close();
                }
                return memoryStream.ToArray();
            }
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Data.Entity.Core.Mapping
Imports System.IO
Imports System.Linq
Imports System.Text
Imports System.Threading.Tasks
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports iTextSharp.tool.xml
Imports Voodoo
Namespace Helpers
	Public Class PdfGenerator
		Public Shared Function GeneratePdfFromFragment(ByVal htmlFragment As String) As Byte()
			Dim html = String.Format("
            <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
            <head>
            <style type='text/css'>
            table,td {{border: 1px solid black;}}
            div {{ white-space: nowrap; padding: 2px;}}
            table{{ border-collapse: collapse; width: 100%; empty-cells: show;}}
            body table {{font-size: 50%;}}
            th {{width:500px; height: 28px;}}
            td {{width:300px; height: 28px;}}
            </style>
            </head><body>{0}</body></html>", htmlFragment)
		  Return generate(html)
		End Function
		Public Shared Function GeneratePdfFromPage(ByVal htmlPage As String) As Byte()
			Return generate(htmlPage)
		End Function
		Private Shared Function generate(ByVal html As String) As Byte()
			Using memoryStream As New MemoryStream()
				Dim pdfDocument = New Document(PageSize.LETTER)
				Dim pdfWriter = PdfWriter.GetInstance(pdfDocument, memoryStream)
				pdfDocument.Open()
				Using fw = New StringReader(html)
					XMLWorkerHelper.GetInstance().ParseXHtml(pdfWriter, pdfDocument, fw)
					pdfDocument.Close()
					fw.Close()
				End Using
				Return memoryStream.ToArray()
			End Using
		End Function
	End Class
End Namespace
$vbLabelText   $csharpLabel
  1. GeneratePdfFromFragment:接收 HTML 片段(如部分 HTML 文件)並通過將其包裹在基本的

    和模板中來轉換為完整的 HTML 結構。 然後它會調用內部的產生方法。

  2. GeneratePdfFromPage:接受完整的 HTML 頁面並直接調用生成方法。

    1. generate:此方法負責將 HTML 轉換為 PDF。

      • 它初始化一個 MemoryStream 以在記憶體中保存生成的 PDF。

      • 它創建一個帶有信紙大小頁面的iTextSharp Document對象。
    • XMLWorkerHelper 使用提供的 StringReader 解析 HTML 內容並將其寫入 PDF 文件中。

    4.

優點

  • 高度自訂化,功能豐富。
  • 廣泛的文件和社群支援。

缺點

  • iTextSharp(免費供個人使用,但大型專案需要商業授權)在處理複雜的 CSS 或 JavaScript 方面可能有限制。
  • XMLWorker(此處使用)是 iTextSharp 用於解析 HTML/CSS 的一個過時工具。 iText7(iText 的較新版本)使用了一個更強大的 HTML 解析器,pdfHTML,可能對現代網頁標準提供更好的支持。
  • 對初學者來說學習曲線較陡。

3. PDFsharp

C# 生成 PDF 7 個庫比較(免費和付費工具):圖 3

PDFSharp 是一個輕量級的開源 .NET PDF 函式庫,非常適合基本的 PDF 建立任務。 如果您的應用程式僅需簡單的操作,例如添加文字、圖像或表格,PdfSharp 是一個用於在 C# 中生成 PDF 文件的易用選擇。 它缺乏像 HTML 到 PDF 轉換這樣的高級功能,但在使用 C# 生成中小型 PDF 檔案時,以其簡單性而著稱。

主要功能

  • 基本 PDF 建立:簡單易用的 API,用於繪製文字和圖形。 非常適合創建簡單的文件。
  • 文件操作:輕鬆合併和修改現有的 PDF,增強文件管理的彈性。
  • 繪圖和圖形支援:PDFsharp 提供一組工具,用於在 PDF 頁面上繪製,包括線條、矩形和其他向量圖形。 它還支援將圖像嵌入到您的PDF中。
  • 免費和開源:PDFsharp 完全免費,可用於商業和非商業用途,對於小型企業和從事開源項目的開發人員來說,它是一個有吸引力的選擇。

範例程式碼

using PdfSharp.Pdf;
using PdfSharp.Drawing;
class Program
{
    static void Main()
    {
        // Create a new PDF document
        PdfDocument document = new PdfDocument();
        document.Info.Title = "Created with PdfSharp";
        // Add a page to the document
        PdfPage page = document.AddPage();
        // Create an XGraphics object to draw on the page
        XGraphics gfx = XGraphics.FromPdfPage(page);
        // Set a font to use for drawing text
        XFont font = new XFont("Verdana", 20, XFontStyle.Bold);
        // Draw the text on the PDF page
        gfx.DrawString("Hello, World!", font, XBrushes.Black, 
            new XRect(0, 0, page.Width, page.Height), XStringFormats.Center);
        // Save the document to disk
        document.Save("Generated.pdf");
    }
}
using PdfSharp.Pdf;
using PdfSharp.Drawing;
class Program
{
    static void Main()
    {
        // Create a new PDF document
        PdfDocument document = new PdfDocument();
        document.Info.Title = "Created with PdfSharp";
        // Add a page to the document
        PdfPage page = document.AddPage();
        // Create an XGraphics object to draw on the page
        XGraphics gfx = XGraphics.FromPdfPage(page);
        // Set a font to use for drawing text
        XFont font = new XFont("Verdana", 20, XFontStyle.Bold);
        // Draw the text on the PDF page
        gfx.DrawString("Hello, World!", font, XBrushes.Black, 
            new XRect(0, 0, page.Width, page.Height), XStringFormats.Center);
        // Save the document to disk
        document.Save("Generated.pdf");
    }
}
Imports PdfSharp.Pdf
Imports PdfSharp.Drawing
Friend Class Program
	Shared Sub Main()
		' Create a new PDF document
		Dim document As New PdfDocument()
		document.Info.Title = "Created with PdfSharp"
		' Add a page to the document
		Dim page As PdfPage = document.AddPage()
		' Create an XGraphics object to draw on the page
		Dim gfx As XGraphics = XGraphics.FromPdfPage(page)
		' Set a font to use for drawing text
		Dim font As New XFont("Verdana", 20, XFontStyle.Bold)
		' Draw the text on the PDF page
		gfx.DrawString("Hello, World!", font, XBrushes.Black, New XRect(0, 0, page.Width, page.Height), XStringFormats.Center)
		' Save the document to disk
		document.Save("Generated.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel
  • PdfDocument:表示整個PDF文件。 您可以添加頁面、設置元數據並操作文檔。
  • PdfPage:表示文件中的單個頁面。 可以使用 AddPage 方法新增頁面。
  • XGraphics:用於在特定頁面上繪製文本、圖像和形狀。 它類似於 .NET 中的 GDI+。
  • XFont:指定文字渲染的字體和樣式。 在此範例中,使用了「Verdana」字型並採用粗體樣式。
  • DrawString:在文件中指定的位置繪製指定的字串。

優點

  • 免費且開源,沒有許可限制。
  • 簡單且輕量化,讓基本的 PDF 生成變得容易上手。
  • 適合不需要複雜功能的專案使用。

缺點

  • 與其他庫相比,功能有限。
  • 沒有原生支援將HTML轉換為PDF。

Syncfusion PDF 程式庫

C# 生成 PDF 7 種庫比較(免費和付費工具):圖 4

Syncfusion PDF Library 是一款高效且全面的工具,專為需要在各種應用中處理 PDF 的企業而設計。 它是更廣泛的Syncfusion套件的一部分,該套件為各種格式和平台提供庫。 PDF 庫的突出之處在於其廣泛的功能集,不僅限於簡單的文件創建,還允許詳細的操作,包括表單填寫、數字簽名和文件安全。

主要功能

  • 全面的 PDF API:Syncfusion PDF 能夠生成高度自定義的 PDF,其中包括複雜的佈局、嵌入式字體和高解析度圖像。 它提供對 PDF 創建的各個方面的詳細控制,從頁面格式到高級佈局選項。
  • 表單處理: 該庫在創建、填充和提取互動式 PDF 表單(AcroForms)中的數據方面表現出色。 這對於創建用於用戶輸入的可填寫PDF、自動化數據輸入或處理填寫的表單非常有用。
  • 數位簽章與加密:Syncfusion 提供強大的安全功能,包括加密 PDF 文件的能力、添加密碼保護和應用數位簽章。 這些功能對於例如醫療保健和法律服務等需要文件真實性和安全性的行業至關重要。程式碼範例
using Syncfusion.Pdf;
using Syncfusion.Pdf.Parsing;
using Syncfusion.Pdf.Graphics;
using Syncfusion.Pdf.Grid;
class Program
{
    static void Main()
    {
        //Create a new PDF document.
    PdfDocument document = new PdfDocument();
    //Add a page to the document.
    PdfPage page = document.Pages.Add();
    //Create PDF graphics for the page.
    PdfGraphics graphics = page.Graphics;
    //Set the standard font.
    PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20);
    //Draw the text.
    graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new PointF(0, 0));
    //Save the document.
    document.Save("Output.pdf");
    //Close the document.
    document.Close(true);
    }
}
using Syncfusion.Pdf;
using Syncfusion.Pdf.Parsing;
using Syncfusion.Pdf.Graphics;
using Syncfusion.Pdf.Grid;
class Program
{
    static void Main()
    {
        //Create a new PDF document.
    PdfDocument document = new PdfDocument();
    //Add a page to the document.
    PdfPage page = document.Pages.Add();
    //Create PDF graphics for the page.
    PdfGraphics graphics = page.Graphics;
    //Set the standard font.
    PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20);
    //Draw the text.
    graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new PointF(0, 0));
    //Save the document.
    document.Save("Output.pdf");
    //Close the document.
    document.Close(true);
    }
}
Imports Syncfusion.Pdf
Imports Syncfusion.Pdf.Parsing
Imports Syncfusion.Pdf.Graphics
Imports Syncfusion.Pdf.Grid
Friend Class Program
	Shared Sub Main()
		'Create a new PDF document.
	Dim document As New PdfDocument()
	'Add a page to the document.
	Dim page As PdfPage = document.Pages.Add()
	'Create PDF graphics for the page.
	Dim graphics As PdfGraphics = page.Graphics
	'Set the standard font.
	Dim font As PdfFont = New PdfStandardFont(PdfFontFamily.Helvetica, 20)
	'Draw the text.
	graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, New PointF(0, 0))
	'Save the document.
	document.Save("Output.pdf")
	'Close the document.
	document.Close(True)
	End Sub
End Class
$vbLabelText   $csharpLabel
  • PdfDocument:表示 PDF 文件。 您可以添加頁面、設置屬性並操作其內容。
  • PdfPage:表示 PDF 文件中的一頁。
  • PdfFont:定義用於渲染文本的字體。 在這種情況下,使用標準的 Helvetica 字體。
  • DrawString:將指定的字串繪製到 PDF 頁面的指定座標。

優點

  • 豐富的功能集,適合創建複雜的 PDF。
  • 專業的支援和文件使其成為大型應用程式的理想選擇。
  • 支持高級 PDF 功能,如表單填寫、加密和註釋。

缺點

  • 商業使用的授權費用相對較高。
  • 複雜的 API,可能需要一段時間才能掌握。

5. PDFShift(線上工具)

C# 生成 PDF 七大庫比較(免費與付費工具):圖 5

PDFShift 是一種基於雲端的服務,專為將 HTML 轉換為 PDF 文件而設計。 它透過其 API 與 C# 應用程式無縫整合,允許您將動態生成的 HTML 網頁轉換為專業品質的 PDF。 PDFShift 對於希望即時從 HTML 內容生成 PDF 文件(例如發票或報告)的網頁開發人員特別有用。 由於PDFShift完全透過其REST API運行,您只需向服務發送幾行HTML,即可回收到可下載的PDF檔案。 這是一個用於網頁 PDF 檔案生成的簡單且可擴展的解決方案。

主要功能

  • HTML 轉換為 PDF:PDFShift 在將 HTML 文件轉換為高品質 PDF 方面表現出色。 它處理複雜的 CSS 樣式、JavaScript 和響應設計佈局,確保您的網頁在 PDF 格式中看起來完全相同。
  • API 整合:PDFShift API 設計用於無縫整合到網路應用程式。 使用起來很簡單:只需發送帶有 HTML 內容的 HTTP POST 請求,服務即可返回 PDF 文件。
  • 自訂選項:PDFShift允許自訂生成的PDF,包括設定頁面大小、方向、邊距和頁眉/頁腳。 您還可以將動態內容添加到頁眉和頁腳,例如頁碼或文件中繼資料。

工作原理

  • 向 PDFShift API 端點發送包含 HTML 內容的 POST 請求。
  • 接收生成的 PDF 作為回應,準備好下載或保存。

範例程式碼

using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
    static async Task Main(string[] args)
    {
        using (HttpClient client = new HttpClient())
        {
            string htmlContent = "<h1>Hello, World!</h1><p>This is generated using PDFShift API.</p>";
            var content = new StringContent(htmlContent, Encoding.UTF8, "application/json");
            HttpResponseMessage response = await client.PostAsync("https://api.pdfshift.io/v3/convert", content);
            byte[] pdfBytes = await response.Content.ReadAsByteArrayAsync();
            System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes);
        }
    }
}
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
    static async Task Main(string[] args)
    {
        using (HttpClient client = new HttpClient())
        {
            string htmlContent = "<h1>Hello, World!</h1><p>This is generated using PDFShift API.</p>";
            var content = new StringContent(htmlContent, Encoding.UTF8, "application/json");
            HttpResponseMessage response = await client.PostAsync("https://api.pdfshift.io/v3/convert", content);
            byte[] pdfBytes = await response.Content.ReadAsByteArrayAsync();
            System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes);
        }
    }
}
Imports System.Net.Http
Imports System.Text
Imports System.Threading.Tasks
Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		Using client As New HttpClient()
			Dim htmlContent As String = "<h1>Hello, World!</h1><p>This is generated using PDFShift API.</p>"
			Dim content = New StringContent(htmlContent, Encoding.UTF8, "application/json")
			Dim response As HttpResponseMessage = Await client.PostAsync("https://api.pdfshift.io/v3/convert", content)
			Dim pdfBytes() As Byte = Await response.Content.ReadAsByteArrayAsync()
			System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes)
		End Using
	End Function
End Class
$vbLabelText   $csharpLabel
  • HttpClient:將 HTML 內容作為 POST 請求發送到 PDFShift API。
  • PostAsync:將請求發送到 API,該 API 會處理 HTML 並返回 PDF。
  • ReadAsByteArrayAsync:將 PDF 回應讀取為位元組陣列,然後可以將其儲存為檔案。

優點

  • 簡單的 API,設置極少。
  • 適用於需要動態 HTML 轉 PDF 的網頁應用程式。
  • 無需管理 PDF 庫或伺服器。

缺點

  • 僅限於 HTML 到 PDF 的轉換; 不支援更複雜的 PDF 功能。
  • 需要網路連線,並在超過一定使用限額後產生費用。

6. DocRaptor(在線工具)

C# 生成 PDF 7 個庫比較(免費和付費工具):圖 6

DocRaptor 是另一個強大的基於 API 的 PDF 生成服務,能將 HTML 和 CSS 轉換成高品質的 PDF。 它以卓越的HTML文档渲染而闻名,尤其是在处理复杂的CSS样式、媒体查询和网页字体方面。 這使得DocRaptor成為從HTML模板直接生成專業外觀文件(如報告、發票和電子書)的絕佳選擇。

主要功能

  • HTML 和 CSS 支持:轉換具有複雜 CSS 樣式的 HTML 文件,包括媒體查詢和字體。
  • API 整合:REST API 可無縫整合到網頁應用程式中。
  • 自訂頁首/頁尾:新增動態頁首和頁尾,包括頁碼和自訂格式。
  • PDF 安全:支援加密和密碼保護。

工作原理

  • 向 DocRaptor API 發送包含 HTML 內容的 POST 請求。
  • 使用參數自訂 PDF 輸出的頁面大小、邊距、頁眉和頁腳。
  • 接收生成的 PDF 作為回應。

範例程式碼

using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
    static async Task Main(string[] args)
    {
        using (HttpClient client = new HttpClient())
        {
            string apiKey = "YOUR_API_KEY";
            string htmlContent = "<h1>Professional Report</h1><p>Generated using DocRaptor API.</p>";
            string jsonData = $"{{\"test\": true, \"document_content\": \"{htmlContent}\", \"name\": \"Generated.pdf\", \"document_type\": \"pdf\"}}";
            var content = new StringContent(jsonData, Encoding.UTF8, "application/json");
            HttpResponseMessage response = await client.PostAsync($"https://docraptor.com/docs?user_key={apiKey}", content);
            byte[] pdfBytes = await response.Content.ReadAsByteArrayAsync();
            System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes);
        }
    }
}
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
    static async Task Main(string[] args)
    {
        using (HttpClient client = new HttpClient())
        {
            string apiKey = "YOUR_API_KEY";
            string htmlContent = "<h1>Professional Report</h1><p>Generated using DocRaptor API.</p>";
            string jsonData = $"{{\"test\": true, \"document_content\": \"{htmlContent}\", \"name\": \"Generated.pdf\", \"document_type\": \"pdf\"}}";
            var content = new StringContent(jsonData, Encoding.UTF8, "application/json");
            HttpResponseMessage response = await client.PostAsync($"https://docraptor.com/docs?user_key={apiKey}", content);
            byte[] pdfBytes = await response.Content.ReadAsByteArrayAsync();
            System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes);
        }
    }
}
Imports System.Net.Http
Imports System.Text
Imports System.Threading.Tasks
Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		Using client As New HttpClient()
			Dim apiKey As String = "YOUR_API_KEY"
			Dim htmlContent As String = "<h1>Professional Report</h1><p>Generated using DocRaptor API.</p>"
			Dim jsonData As String = $"{{""test"": true, ""document_content"": ""{htmlContent}"", ""name"": ""Generated.pdf"", ""document_type"": ""pdf""}}"
			Dim content = New StringContent(jsonData, Encoding.UTF8, "application/json")
			Dim response As HttpResponseMessage = Await client.PostAsync($"https://docraptor.com/docs?user_key={apiKey}", content)
			Dim pdfBytes() As Byte = Await response.Content.ReadAsByteArrayAsync()
			System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes)
		End Using
	End Function
End Class
$vbLabelText   $csharpLabel
  • API金鑰:使用DocRaptor時,必須提供API金鑰進行身份驗證。 將 "YOUR_API_KEY" 替換為您的實際密鑰。
  • JsonData:這個 JSON 字串包含 HTML 內容、文件名稱和類型(在此情況下為 PDF)。
  • PostAsync:將 HTML 內容和參數發送到 DocRaptor API 以生成 PDF。

優點

  • 高品質的渲染,全面支援HTML、CSS和JavaScript。
  • 文件佈局和安全性的高級自訂選項。
  • 無需維護 PDF 生成程式庫或基礎架構。

缺點

  • 超出免費使用限額後的付費服務。
  • 依賴網路連接性。

7. 無需編碼的線上工具

如果您不想編寫程式碼或需要快速生成 PDF 的解決方案,有幾個線上工具可以讓您快速輕鬆地建立 PDF。 以下是一些值得注意的選項:

7.1. Smallpdf

C# 生成 PDF 7 個函式庫比較(免費和付費工具):圖 7

Smallpdf 是一個線上平台,提供各種與 PDF 相關的工具,包括從多種文件格式創建 PDF 的功能。 它是為那些想要簡單拖放介面的使用者設計的,不需要編寫程式碼。 Smallpdf 廣泛用於快速文件轉換,例如將 Word 文件、Excel 表格或圖像轉換為 PDF。 它還提供合併、壓縮和拆分 PDF 的工具,使其成為一個多功能的基本 PDF 任務工具。

主要功能

  • 檔案轉換:Smallpdf 支援將 Word、Excel、PowerPoint 和圖像檔案(JPG、PNG)轉換為 PDF。 這使其成為需要快速從各種文檔類型創建PDF的用戶的理想選擇。
  • 合併和拆分 PDF:Smallpdf 提供簡單的界面,用於將多個 PDF 合併成單一文件或將 PDF 拆分為個別頁面。
  • 雲端存儲整合:您可以輕鬆地從 Google Drive 或 Dropbox 上傳文件,並將轉換後的 PDF 保存回這些平台,簡化文件管理。
  • PDF 編輯工具:除了轉換之外,Smallpdf 還提供基本的 PDF 編輯工具,供您編輯任何現有的 PDF 文件,例如添加註釋、填寫表格以及數位簽署文件。

優點

  • 對於非開發人員來說,非常容易使用。
  • 基本使用免費,可選擇升級以獲得更多功能。
  • 提供各種與 PDF 相關的工具,如合併、拆分和壓縮 PDF。

缺點

  • 與基於代碼的解決方案相比,定制化有限。
  • 免費層可能有某些功能限制。

7.2. PDFescape

C# 生成 PDF 7 種函式庫比較(免費及付費工具):圖 8

PDFescape 是一款易於使用的基於網絡的 PDF 編輯器,允許用戶在不需要安裝任何軟件的情況下創建、編輯和查看 PDF。 這是一個很棒的工具,適合需要快速編輯 PDF 的人,例如填寫表格、添加文字註釋或插入圖片。 PDFescape 也提供從頭開始創建新 PDF 的工具,使其成為基本文件創建的靈活選擇。

主要功能

  • 表單填寫和編輯:PDFescape 擅長處理 PDF 表單。 用戶可以輕鬆填寫表單或編輯 PDF 文件中的現有欄位,這對於合同、申請和其他表格非常有用。
  • 基本 PDF 建立:對於希望從頭開始建立 PDF 的用戶,PDFescape 提供了添加文字、形狀、圖片和表單欄位的工具。 這對於創建簡單的文件,如信件或表格,非常有用。
  • 註解和註釋:您可以在現有的 PDF 中添加註釋、便利貼和其他標註,這使得 PDFescape 成為文檔審核和協作的絕佳工具。
  • 無需安裝:作為基於網路的工具,PDFescape 完全在您的瀏覽器中運行,因此不需要安裝任何軟體。 這使其非常適合需要隨時隨地快速訪問 PDF 工具的用戶。

優點

  • 對於非技術用戶而言,使用簡單。
  • 免費層級提供基本的 PDF 創建和編輯功能。
  • 適合小型 PDF 編輯任務。

缺點

  • 缺乏進階功能以進行複雜的 PDF 創建。
  • 有限的設計和格式選項。

7.3. PDF Candy

C# 生成 PDF 7 個庫比較(免費與付費工具):圖 9

PDF Candy 是一套免費的線上 PDF 工具,涵蓋了廣泛的 PDF 相關任務,包括檔案轉換和編輯。 對於需要快速執行 PDF 操作又不想註冊帳號或安裝軟體的用戶來說,這是一個絕佳的選擇。 PDF Candy 支援將多種檔案類型,如 Word 文件、圖片和文字檔,轉換為 PDF。 它還提供合併、拆分和壓縮PDF的工具。

主要功能

  • 多樣化的轉換選項:PDF Candy 可以將多種檔案格式,包括 Word 文件、圖像和文字檔案,轉換為 PDF。 這使其成為處理不同類型內容的靈活工具。
  • 合併和拆分 PDF:該平台允許用戶將多個 PDF 合併成一個,或者將大型 PDF 拆分成較小、更易管理的文件。
  • 檔案隱私:PDF Candy會在短時間內自動從其伺服器上刪除檔案,確保您的文件保持私密。
  • 免費使用:PDF Candy 上的大部分工具皆可免費使用且無需註冊,使其對廣泛的群體更加易於接觸。 然而,它還提供了一個高級版本,針對需要更頻繁使用或更大文件轉換的用戶提供更多的高級功能。

優點

  • 對大多數用戶來說,使用簡單且完全免費。
  • 支持多種文件類型轉換為 PDF。
  • 基本使用不需要註冊帳號。

缺點

  • 有限的進階 PDF 自訂功能。
  • 某些工具可能對檔案大小或轉換複雜性有限制。

結論

C# 生成 PDF 7 個庫的比較(免費和付費工具):圖 10

選擇在 C# 中生成 PDF 文件的正確工具取決於您的需求。 如果您需要從 HTML 內容生成 PDF 文件,IronPDF 和 PDFShift 是出色的選擇。 iTextSharp 和 Syncfusion 提供了廣泛的自訂選項和對文件結構的控制,適用於較為複雜的專案。 對於較簡單的開源解決方案,PDFsharp 是修改 PDF 文件或創建基本 PDF 的可靠選擇。 最後,對於非開發人員而言,Smallpdf、PDFescape 和 PDF Candy 提供了簡單且無需代碼的選項來處理 PDF 文件。

對於那些有興趣試用IronPDF的人來說,這是一個極好的選擇,讓開發人員可以在購買付費授權前,先測試其 HTML 至 PDF 轉換和 PDF 操控功能。 試用版讓您探索其高級功能,如高品質 PDF 文件生成、安全選項和修改現有 PDF 文件,使您能親身體驗工具的能力。 如果您的專案需要頻繁的 HTML 到 PDF 轉換或進行複雜的 PDF 編輯,IronPDF 的免費試用是查看它是否符合您需求的好方法。

通過評估每種工具的特定功能以及您的專案範圍,您可以選擇最佳解決方案以在 C# 中有效生成 PDF 文件。

Chipego
奇佩戈·卡林达
軟體工程師
Chipego 擁有天生的傾聽技能,這幫助他理解客戶問題,並提供智能解決方案。他在獲得信息技術理學學士學位後,于 2023 年加入 Iron Software 團隊。IronPDF 和 IronOCR 是 Chipego 專注的兩個產品,但隨著他每天找到新的方法來支持客戶,他對所有產品的了解也在不斷增長。他喜歡在 Iron Software 的協作生活,公司內的團隊成員從各自不同的經歷中共同努力,創造出有效的創新解決方案。當 Chipego 離開辦公桌時,他常常享受讀好書或踢足球的樂趣。
< 上一頁
如何使用 C# 在不使用庫的情況下將 HTML 轉換為 PDF
下一個 >
修正 C# 中的 html2pdf 分頁符號(開發者教程)