跳至頁尾內容
使用IRONPDF

如何使用VB將HTML頁轉換為PDF

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

1. IronPDF

IronPDF 是一個高級的.NET PDF 程式庫,專為需要高品質HTML轉PDF文件轉換的開發者設計。 IronPDF使用基於Chromium的渲染引擎,確保轉換精確,非常適合想要將HTML頁面或基於網頁的報告轉換為C#中的PDF文件的網路應用程式。 該工具以其強大的現有PDF文件處理能力而著稱,並提供編輯、合併或拆分PDF的功能。

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

主要特點

  • HTML轉PDF轉換: IronPDF擅長將複雜的HTML頁面(包括支持JavaScript執行和現代CSS)直接轉換為PDF。 它使用基於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>";

        // 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程式庫以存取其擁有的類別和方法。
  2. HTML字串: 變數'html'包含您要轉換為PDF的HTML內容。
  3. 渲染器實例: new ChromePdfRenderer(); 建立ChromePdfRenderer類的一個實例,提供HTML內容轉換為PDF格式的方法。
  4. 渲染PDF: PdfDocument pdf = renderer.RenderHtmlAsPdf(html); 將HTML字串轉換為PDF文件。
  5. 保存PDF: pdf.SaveAs("Generated.pdf"); 將生成的PDF保存到指定的文件路徑。

優點

  • 網頁內容的優良渲染質量。
  • 強大的表單、超連結和書籤支持。

缺點

  • 對於較大的專案來說,許可費可能是一個考慮因素。
  • 更多的高級功能可能需要深入學習。

2. iText

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

iText是一個知名的.NET PDF程式庫,提供了廣泛的功能來建立和編輯PDF文件。 它廣泛應用於金融和法律等行業,這些行業需要自定義和安全性高的文件。 iText允許您從頭開始建立PDF文件、填寫表單和修改PDF文件,提供對文件內容的廣泛控制。 它特別適合需要用精確佈局和動態資料生成PDF文件的企業應用,如發票或合同。

主要特點

  • 完整的PDF建立能力: iText很容易讓開發者從頭開始建立C#中的PDF文件,可以新增文字、圖片、表格和向量圖形。 它提供對文件佈局的完全控制,包括能夠定義頁面尺寸、邊距和元資料。
  • 表單填寫: iText的一大優勢是其處理PDF表單(AcroForms)的能力。 您可以建立帶有各種輸入字段的表單,然後程式填寫它們,這一功能在自動化文件生成工作流程中非常實用。
  • XML轉PDF轉換: iText擁有強大的功能來藉助XFA(XML表單架構)將XML資料轉換為PDF。 這在需要將XML資料格式化為標準表單或報告的行業中特別有用。
  • PDF安全: iText包括許多高級功能,如新增加密、數位簽名和浮水印,以確保文件的真實性和保護敏感資料。
  • 文字提取和操作: 您可以從現有的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(htmlFragment As String) As Byte()
            Dim html As String = 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(htmlPage As String) As Byte()
            Return Generate(htmlPage)
        End Function

        Private Shared Function Generate(html As String) As Byte()
            Using memoryStream As New MemoryStream()
                Dim pdfDocument As New Document(PageSize.LETTER)
                Dim pdfWriter As PdfWriter = PdfWriter.GetInstance(pdfDocument, memoryStream)
                pdfDocument.Open()
                Using fw As 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文件)並通過包裝成基本的<body>範本將其轉換為完整的HTML結構。 然後調用內部Generate方法。
  2. GeneratePdfFromPage: 接受一個完整的HTML頁面,直接調用Generate方法。
  3. Generate: 此方法負責HTML到PDF的轉換。
    • 初始化MemoryStream以在記憶體中保存生成的PDF。
    • 建立一個具有信紙大小頁面的iText Document物件。
    • XMLWorkerHelper解析HTML內容,並使用提供的StringReader將其寫入PDF文件中。

優點

  • 可高度定制,功能豐富。
  • 龐大的文件和社群支持。

缺點

  • iText(對個人使用免費,但對大規模專案需要商業許可)可能在處理複雜CSS或JavaScript上有一定限制。
  • XMLWorker(這裡使用的)是iText中一個已棄用的工具,用於解析HTML/CSS。 iText(新版本的iText)使用一個更強大的HTML解析器,pdfHTML,可能為現代網頁標準提供更好的支持。
  • 對初學者來說學習曲線較陡。

3. PDFSharp

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

PDFSharp是一個輕量級的開源.NET PDF程式庫,適合基本的PDF建立任務。 如果您的應用程式僅需要簡單的操作,如新增文字、圖片或表格,PDFSharp是用於在C#中生成PDF文件的便捷選擇。 它缺乏HTML到PDF的進階功能,但在其生成小到中等大小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 程式庫 是一款高性能、全面的工具,專為需要在各種應用程式中處理PDF的企業設計。 它是Syncfusion套件的一部分,該套件提供了多種格式和平台的程式庫。 這個PDF程式庫以其廣泛的特性集著稱,不僅限於簡單的文件建立,還允許詳細操作,包括填寫表單、數位簽名和文件安全。

主要特點

  • 綜合PDF API: 能夠生成高度自定義的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文件的網路開發人員特別有用。 由於PDFShift完全透過其REST API運行,您只需將幾行HTML發送到服務,即可收到一個可下載的PDF文件作為回應。 這是一個簡單、可擴展的解決方案,適合基於網頁的PDF文件生成。

主要特點

  • HTML到PDF轉換: PDFShift擅長將HTML文件轉換為高品質的PDF。 它處理複雜的CSS樣式、JavaScript和響應式佈局設計,確保您的網頁在PDF格式中顯示完全一致。
  • API整合: PDFShift API設計為無縫整合到網頁應用程式中。 使用起來很簡單:只需發送包含HTML內容的HTTP POST請求,服務將返回PDF文件。
  • 自定義選項: 允許自定義生成的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任務的多功能工具。

主要特點

  • 文件轉換: 支持將Word、Excel、PowerPoint和圖片文件(JPG、PNG)轉換為PDF。 這對於需要快速從多種型別的文件建立PDF的使用者來說非常理想。
  • 合併與拆分PDF: 提供一個簡單的介面,可以將多個PDF合併為一個文件或將PDF拆分為個別頁面。
  • 雲端儲存整合: 您可以輕鬆從Google雲端硬碟或Dropbox上傳文件,並將轉換的PDF保存回這些平台,以簡化文件管理。
  • PDF編輯工具: 提供基本的PDF編輯工具來編輯任何現有的PDF文件,如新增註釋、填寫表單和進行數位簽名。

優點

  • 對非開發人員來說,非常簡單易用。
  • 免費提供基本使用,另有升級選項以獲得更多功能。
  • 提供多種與PDF相關的工具,如合併、分割和壓縮PDF。

缺點

  • 與基於程式碼的解決方案相比,具有有限的自定義能力。
  • 免費層級可能會有一些功能限制。

7.2. PDFescape

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

PDFescape 是一款易於使用的基於網頁的PDF編輯器,它允許使用者建立、編輯和觀看PDF,而不需要安裝任何軟體。 這是一個對於需要快速編輯PDF的使用者來說非常好的工具,例如填寫表單、新增文字註釋或插入圖片。 PDFescape還提供從頭建立新的PDF工具,這使得它成為一個多用途的基本文件建立選擇。

主要特點

  • 表單填寫和編輯: 擅長處理PDF表單。 使用者可以輕鬆填寫表單或編輯PDF文件中的現有字段,這對於合同、應用程式和其他表單很有用。
  • 基本PDF建立: 提供工具以新增文字、形狀、圖片和表單字段。 對於建立諸如書信或表單等簡單文件非常有用。
  • 註解和評論: 向現有PDF中新增評論、便簽和其他註釋,使PDFescape成為文件審閱與協作的好幫手。
  • 無需安裝: 完全在您的瀏覽器中運行,因此不需要安裝任何軟體。 這使得它對於需要快速存取PDF工具的使用者非常理想。

優點

  • 對於非技術使用者來說容易操作。
  • 基本PDF建立和編輯的免費層。
  • 適合小型的PDF編輯任務。

缺點

  • 對於複雜的PDF建立缺乏進階功能。
  • 設計和格式選項有限。

7.3. PDF Candy

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是極佳的選擇。 iText和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生成的Web應用程式。

使用具有Chromium渲染引擎的程式庫生成PDF有哪些優勢?

像IronPDF這樣使用Chromium渲染引擎的程式庫提供高品質的HTML到PDF轉換,並支援複雜的樣式和JavaScript。

Syncfusion PDF 程式庫如何惠及企業應用程式?

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

IronPDF與即將推出的.NET 10版相容嗎?

是的 - IronPDF 直接支援.NET 10。它被列為與.NET 10相容,與9、8、7、6、Core、Standard和Framework版本一起,無需特殊變通方法。(ironpdf.com)

Curtis Chau
技術作家

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

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

Iron 支援團隊

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