使用 IRONPDF

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

發佈 2024年12月16日
分享:

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

1. IronPDF

損壞的圖片 從Pixabay添加,從你的文件中選擇或拖放圖片到這裡。

IronPDF是一個專為需要高品質HTML到PDF文件轉換的開發人員設計的高級.NET 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
VB   C#
  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 數據轉換為 PDF。(XML 表單架構). 這在需要將 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
VB   C#
  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
VB   C#
  • 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 創建的各個方面的詳細控制,從頁面格式到高級佈局選項。
  • 表單處理:該庫在創建、填寫和提取交互式 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
VB   C#
  • 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 文件(例如發票或報告)的網頁開發人員特別有用。 由於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
VB   C#
  • 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
VB   C#
  • API Key: 使用 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 文件。

下一個 >
修正 C# 中的 html2pdf 分頁符號(開發者教程)

準備開始了嗎? 版本: 2024.12 剛剛發布

免費 NuGet 下載 總下載次數: 11,853,890 查看許可證 >