跳過到頁腳內容
使用IRONPDF

C#生成文件的PDF比較7個庫(免費及付費工具)

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

1.IronPdf 2.

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

IronPDF 可以透過 NuGet 套件管理器輕鬆整合到 C# 專案中,只需幾行程式碼,即可開始產生 PDF 文件。 它是一款功能強大的工具,既可用於動態 HTML 內容,也可用於伺服器產生的 PDF 檔案輸出。

主要功能

  • HTML 轉 PDF 轉換:IronPDF 擅長將複雜的 HTML 頁面(包括對 JavaScript 執行和現代 CSS 的支援)直接轉換為 PDF。 它使用基於 Chromium 的渲染引擎,確保輸出效果與在網頁瀏覽器中看到的效果完全相同。
  • PDF 操作:IronPDF 讓您輕鬆合併、分割和修改現有的 PDF 文件。 -進階樣式選項:IronPDF 支援外部樣式表、自訂字體和 JavaScript,可讓您建立高度樣式化的文件。 它非常適合用於發票、報告和基於 Web 的內容。 -安全功能: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>";

        // Create an instance of ChromePdfRenderer
        ChromePdfRenderer renderer = new ChromePdfRenderer(); 

        // Render the HTML as a PDF document
        PdfDocument pdf = renderer.RenderHtmlAsPdf(html); 

        // Save the PDF to a specified file
        pdf.SaveAs("Generated.pdf"); 
    }
}
using IronPdf;

class Program
{
    static void Main()
    {
        string html = "<h1>Hello, World!</h1><p>This PDF is generated from HTML.</p>";

        // Create an instance of ChromePdfRenderer
        ChromePdfRenderer renderer = new ChromePdfRenderer(); 

        // Render the HTML as a PDF document
        PdfDocument pdf = renderer.RenderHtmlAsPdf(html); 

        // Save the PDF to a specified file
        pdf.SaveAs("Generated.pdf"); 
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main()
		Dim html As String = "<h1>Hello, World!</h1><p>This PDF is generated from HTML.</p>"

		' Create an instance of ChromePdfRenderer
		Dim renderer As New ChromePdfRenderer()

		' Render the HTML as a PDF document
		Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)

		' Save the PDF to a specified file
		pdf.SaveAs("Generated.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

1.命名空間導入using IronPdf;導入 IronPDF 庫以存取其類別和方法。

  1. HTML 字串:變數"html"包含要轉換為 PDF 的 HTML 內容。 3.渲染器實例new ChromePdfRenderer();建立 ChromePdfRenderer 類別的實例,提供將 HTML 內容渲染為 PDF 格式的方法。 4.渲染 PDFPdfDocument pdf = renderer.RenderHtmlAsPdf(html);將 HTML 字串轉換為 PDF 文件。 5.儲存 PDFpdf.SaveAs(&quot;Generated.pdf&quot;);將產生的 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 表單架構)將 XML 資料轉換為 PDF。 這在需要將 XML 資料格式化為標準格式或報告的行業中尤其有價值。
  • PDF 安全性:iTextSharp 包含高級功能,例如新增加密、數位簽章和浮水印,以確保文件的真實性並保護敏感資料。 -文本提取和處理:您可以從現有的 PDF 中提取文本,重新排列文檔內容,或處理頁面元素,這使其可用於對文檔進行後處理或從複雜的 PDF 生成摘要報告。

程式碼範例

using System;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.tool.xml;

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();
                return memoryStream.ToArray();
            }
        }
    }
}
using System;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.tool.xml;

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();
                return memoryStream.ToArray();
            }
        }
    }
}
Imports System
Imports System.IO
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports iTextSharp.tool.xml

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)
				End Using
				pdfDocument.Close()
				Return memoryStream.ToArray()
			End Using
		End Function
	End Class
End Namespace
$vbLabelText   $csharpLabel
  1. GeneratePdfFromFragment :接收一個 HTML 片段(例如部分 HTML 文件),並透過將其包裝在一個基本的 HTML 文件中,將其轉換為完整的 HTML 結構。<html>模板。 然後它調用內部的Generate方法。
  2. GeneratePdfFromPage :接受一個完整的 HTML 頁面,並直接呼叫Generate方法。 3.產生:此方法處理 HTML 到 PDF 的轉換。
    • 初始化 MemoryStream 以將產生的 PDF 保存在記憶體中。
    • 建立一個具有信紙大小頁面的 iTextSharp 文件物件。
    • XMLWorkerHelper 解析 HTML 內容,並使用提供的 StringReader 將其寫入 PDF 文件。

優點

  • 高度可自訂,功能豐富。
  • 豐富的文件資料和社群支援。

缺點

  • iTextSharp (個人使用免費,但大型專案需要商業許可)在處理複雜的 CSS 或 JavaScript 時可能存在限制。
  • XMLWorker (此處使用)是 iTextSharp 中用於解析 HTML/CSS 的一個已棄用的工具。 iText7(iText 的新版本)使用更強大的 HTML 解析器pdfHTML ,可以更好地支援現代 Web 標準。
  • 對初學者來說,學習曲線更陡峭。

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。

4. Syncfusion PDF 庫

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

Syncfusion PDF Library是一款高效能、功能全面的工具,專為需要在各種應用程式中處理 PDF 的企業而設計。 它是 Syncfusion 套件的一部分,該套件提供適用於各種格式和平台的庫。 PDF 庫之所以脫穎而出,是因為它擁有豐富的功能集,不僅限於簡單的文件創建,還允許進行詳細的操作,包括表單填寫、數位簽章和文件安全。

主要功能

-全面的 PDF API :能夠產生高度客製化的 PDF,包括具有複雜佈局、嵌入式字體和高解析度圖像的 PDF。 提供對 PDF 創建各個方面的詳細控制,從頁面格式到高級佈局選項。 -表單處理:此程式庫擅長建立、填寫並從互動式 PDF 表單(AcroForms)中提取資料。 可用於建立使用者可填寫的 PDF 檔案、自動資料輸入或處理已填寫的表單。 -數位簽章和加密:提供強大的安全功能,包括加密 PDF 文件、新增密碼保護和應用數位簽章。 對於醫療保健和法律服務等需要文件真實性和安全性的行業來說,這一點至關重要。

程式碼範例

using Syncfusion.Pdf;
using Syncfusion.Pdf.Graphics;

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.Graphics;

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.Graphics

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 的 7 個庫比較(免費和付費工具):圖 5

PDFShift是一款基於雲端的服務,旨在將 HTML 轉換為 PDF 檔案。 它透過 API 與 C# 應用程式無縫集成,使您可以將動態生成的 HTML 網頁轉換為專業品質的 PDF。 PDFShift 對於希望根據 HTML 內容(例如發票或報告)按需產生 PDF 文件的 Web 開發人員來說尤其有用。 由於 PDFShift 完全透過其 REST API 運行,您只需向該服務發送幾行 HTML 程式碼,即可收到可下載的 PDF 檔案。 這是一個簡單、可擴展的基於 Web 的 PDF 文件生成解決方案。

主要功能

  • HTML 轉 PDF 轉換:PDFShift 擅長將 HTML 文件轉換為高品質的 PDF。 它可以處理複雜的 CSS 樣式、JavaScript 和響應式設計佈局,確保您的網頁在 PDF 格式中看起來完全一樣。
  • API 整合:PDFShift API 旨在與 Web 應用程式無縫整合。 使用方法很簡單:只需傳送包含 HTML 內容的 HTTP POST 請求,服務就會傳回 PDF 文件。 -自訂選項:允許自訂產生的 PDF,包括設定頁面大小、方向、邊距和頁首/頁尾。 您也可以為頁首和頁尾新增動態內容,例如頁碼或文件元資料。

如何運作

  • 傳送包含 HTML 內容的 POST 請求給 PDFShift API 端點。
  • 收到產生的 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 轉換的 Web 應用程式。
  • 無需管理 PDF 庫或伺服器。

缺點

  • 僅限於HTML轉PDF; 不支援更複雜的PDF功能。
  • 需要網路連接,超過一定使用量後會產生費用。

6. DocRaptor(線上工具)

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

DocRaptor是另一款功能強大的基於 API 的 PDF 生成服務,可將 HTML 和 CSS 轉換為高品質的 PDF。 它以出色的 HTML 文件渲染能力而聞名,尤其擅長處理複雜的 CSS 樣式、媒體查詢和 Web 字體。 這使得 DocRaptor 成為直接從 HTML 範本產生報告、發票和電子書等專業外觀文件的絕佳選擇。

主要功能

  • HTML 和 CSS 支援:轉換具有複雜 CSS 樣式(包括媒體查詢和字體)的 HTML 文件。
  • API 整合:REST API,可無縫整合到 Web 應用程式中。 -自訂頁首/頁尾:新增動態頁首和頁腳,包括頁碼和自訂格式。
  • 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 任務的多功能工具。

主要功能

-檔案轉換:支援將 Word、Excel、PowerPoint 和圖片檔案(JPG、PNG)轉換為 PDF。 這使其成為需要快速從各種文件類型建立 PDF 的使用者的理想選擇。 -合併和分割 PDF :提供一個簡單的介面,可以將多個 PDF 合併成一個文件,或將 PDF 拆分成單獨的頁面。 -雲端儲存整合:您可以輕鬆地從 Google Drive 或 Dropbox 上傳文件,並將轉換後的 PDF 保存回這些平台,從而簡化文件管理。

  • PDF 編輯工具:提供基本的 PDF 編輯工具,用於編輯任何現有的 PDF 文檔,例如新增註釋、填寫表單和進行數位簽章。

優點

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

缺點

與基於程式碼的解決方案相比,可自訂性有限。 免費版可能存在一些功能限制。

7.2. PDFescape

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

PDFescape是一款易於使用的基於 Web 的 PDF 編輯器,使用者無需安裝任何軟體即可建立、編輯和檢視 PDF 檔案。 對於需要快速編輯 PDF 文件(例如填寫表格、添加文字註釋或插入圖像)的用戶來說,這是一個很棒的工具。 PDFescape 還提供從頭開始建立新 PDF 的工具,使其成為基本文件建立的靈活選擇。

主要功能

-表格填寫與編輯:擅長處理 PDF 表格。 使用者可以輕鬆填寫 PDF 文件中的表格或編輯現有字段,這對於合約、申請表和其他表格非常有用。 -基本 PDF 建立:提供新增文字、形狀、圖像和表單欄位的工具。 適用於建立簡單的文檔,例如信件或表格。 -註釋和評論:在現有 PDF 中新增評論、便條和其他註釋,使 PDFescape 成為文件審查和協作的絕佳工具。 -無需安裝:完全在瀏覽器中運行,因此無需安裝任何軟體。 這使其成為需要隨時隨地快速存取 PDF 工具的用戶的理想選擇。

優點

  • 非技術用戶也能輕鬆使用。
  • 免費版提供基本的 PDF 建立和編輯功能。
  • 適用於簡單的PDF編輯任務。

缺點

  • 缺少建立複雜 PDF 檔案的進階功能。
  • 設計和格式選項有限。

7.3. PDF糖果

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

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

主要功能

-多種轉換選項:可將多種文件格式(包括 Word 文件、圖像和文字檔案)轉換為 PDF。 這使其成為處理不同類型內容的靈活工具。 -合併和拆分 PDF :允許使用者將多個 PDF 合併為一個,或將大型 PDF 拆分為更小、更易於管理的文件。 -文件隱私:在短時間內自動從伺服器上刪除文件,確保您的文件保持隱私。 -免費使用:大多數工具無需註冊即可免費使用,因此可供廣大用戶使用。 不過,它也提供高級版本,具有更高級的功能,適合需要更頻繁使用或轉換更大文件的用戶。

優點

  • 使用方便,而且對大多數用戶來說完全免費。
  • 支援將多種文件類型轉換為 PDF。
  • 基本使用無需註冊帳戶。

缺點

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

結論

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

在 C# 中選擇合適的工具來產生 PDF 檔案取決於您的需求。 如果您需要從 HTML 內容產生 PDF 文檔,IronPDF 和 PDFShift 都是不錯的選擇。 iTextSharp 和 Syncfusion 為更複雜的專案提供了廣泛的自訂選項和對文件結構的控制。 對於更簡單、開源的解決方案,PDFsharp 是修改 PDF 檔案或建立基本 PDF 的可靠選擇。 最後,對於非開發人員,Smallpdf、PDFescape 和 PDF Candy 提供了簡單、無需程式碼即可處理 PDF 文件的選項。

對於有興趣嘗試[IronPDF 的](trial license)用戶來說,這是一個絕佳的選擇,開發者可以在購買付費許可證之前測試其 HTML 到 PDF 的轉換和 PDF 操作功能。 試用版讓您可以探索其高級功能,例如高品質 PDF 文件生成、安全選項和修改現有 PDF 文檔,讓您親身體驗該工具的功能。 如果您的專案需要經常將 HTML 轉換為 PDF 或進行複雜的 PDF 編輯,IronPDF 的免費試用版是了解它是否符合您的需求的絕佳方式。

透過評估每種工具的特定功能和專案範圍,您可以選擇在 C# 中高效產生 PDF 檔案的最佳解決方案。

常見問題解答

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

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

免費與付費的 C# PDF 函式庫有哪些差異?

PDFsharp 等免費函式庫非常適合基本的 PDF 建立和處理,而 IronPDF 等付費函式庫則提供 HTML 至 PDF 轉換、表單處理和增強安全性等進階功能。

在 C# 中執行基本 PDF 任務的最佳開放原始碼程式庫是什麼?

PDFsharp 是一個輕量級的開放原始碼 .NET PDF 函式庫,是基本 PDF 建立工作的理想選擇。無論是商業或非商業用途,它都是免費的。

iTextSharp 如何支援安全的 PDF 文件建立?

iTextSharp 提供廣泛的客製化選項以建立安全的 PDF 文件,包括支援數位簽章和加密,因此適用於需要安全文件處理的產業。

我可以在 C# 應用程式中使用線上工具將 HTML 轉換為 PDF 嗎?

是的,PDFShift 和 DocRaptor 等線上工具提供基於 API 的 HTML 至 PDF 轉換,非常適合需要動態 PDF 產生的網路應用程式。

使用基於 Chromium 演算引擎的函式庫來產生 PDF 有什麼好處?

IronPdf 等程式庫使用基於 Chromium 的渲染引擎,可提供高品質的 HTML 至 PDF 轉換,並支援複雜的樣式設計和 JavaScript。

Syncfusion PDF Library 如何使企業應用程式獲益?

Syncfusion PDF Library 為企業應用程式提供全面的功能,包括表單處理、數位簽章和加密,因此非常適合複雜的專業需求。

IronPDF 是否與即將發行的 .NET 10 版本相容?

是 - IronPDF 開箱即支援 .NET 10。它被列為與 .NET 10 以及 9、8、7、6、Core、Standard 和 Framework 版本相容,而且不需要特殊的變通。(ironpdf.com)。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。