跳至页脚内容
使用IRONPDF

C# 生成PDF 7个库比较(免费和付费工具)

C# 生成 PDF 的功能对于许多现代应用程序至关重要,从创建报告到建立发票系统。 In this article, we will explore six popular ways to generate PDF files using C#, highlighting both code-based libraries, such as IronPDF, and online APIs and tools. 无论您是需要在 Web 应用程序中动态生成 PDF 文件,还是仅需从现有文档创建 PDF 文件,这些工具都能满足您的需求。

1. IronPDF

IronPDF 是一个为开发人员设计的高级 .NET PDF 库,提供高质量的 HTML 转 PDF 文件转换。 IronPDF 使用基于 Chromium 的渲染引擎以保证精确的转换,是 Web 应用转换 HTML 页面或基于 Web 的报告为 PDF 文件的理想选择。 该工具因其对现有 PDF 文档的强大处理能力而闻名,并提供编辑、合并或拆分 PDF 的功能。

IronPDF 可以轻松通过 NuGet 包管理器集成到 C# 项目中,您只需编写几行代码即可开始生成 PDF 文档。 它是动态 HTML 内容和服务器生成的 PDF 文件输出的多功能工具。

主要功能

  • HTML 到 PDF 转换:IronPDF 擅长将复杂的 HTML 页面转换为 PDF,包括支持 JavaScript 执行和现代 CSS。 它使用基于 Chromium 的渲染引擎,确保输出与在 Web 浏览器中看到的内容相同。
  • 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 库以访问其类和方法。
  2. HTML 字符串:变量 'html' 包含您要转成 PDF 的 HTML 内容。
  3. 渲染器实例new ChromePdfRenderer(); 创建 ChromePdfRenderer 类的实例,提供将 HTML 内容渲染为 PDF 格式的方法。
  4. 渲染 PDFPdfDocument pdf = renderer.RenderHtmlAsPdf(html); 将 HTML 字符串转换为 PDF 文档。
  5. 保存 PDFpdf.SaveAs("Generated.pdf"); 保存生成的 PDF 到指定的文件路径。

优点

  • 对 Web 内容的杰出渲染质量。
  • 对表单、超链接和书签的强大支持。

缺点

  • 对较大项目的许可费用可能需要考虑。
  • 更高级的功能可能需要深入学习。

2. iTextSharp

C# 生成 PDF 的 7 个库比较(免费和付费工具):图 2

iTextSharp 是一个成熟的 .NET PDF 库,提供广泛的功能来创建和编辑 PDF 文件。 它广泛用于金融和法律等行业,这些领域的文档必须定制和安全。 iTextSharp 允许您从头创建 PDF 文件,填写表单和修改 PDF 文件,提供对文档内容的广泛控制。 它特别适用于需要生成具有精确布局和动态数据的 PDF 文件的企业级应用程序,例如发票或合同。

主要功能

  • 完整的 PDF 创建能力:iTextSharp 使从头开始创建 PDF 文件变得容易,让开发人员可以添加文本、图像、表格和矢量图形。 它提供对文档布局的完整控制,包括定义页面大小、边距和元数据的能力。
  • 表单填充:iTextSharp 的一个显著优势是其处理 PDF 表单 (AcroForms) 的能力。 您可以创建具有各种输入字段的表单,并随后以编程方式填写它们,这是自动化文档生成流程中的一项有用功能。
  • XML 到 PDF 转换:iTextSharp 具有强大的 XML 数据转换成 PDF 的支持,使用 XFA (XML 表单架构)。 这在需要将 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><body> 模板中将其转换为完整的 HTML 结构。 然后调用内部 Generate 方法。
  2. GeneratePdfFromPage:接受完整的 HTML 页面并直接调用 Generate 方法。
  3. Generate:该方法处理 HTML 到 PDF 的转换。
    • 初始化一个 MemoryStream 以在内存中保存生成的 PDF。
    • 创建一个用于 iTextSharp 的 Document 对象,页面大小为信纸。
    • 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 Library

C# 生成 PDF 的 7 个库比较(免费和付费工具):图 4

Syncfusion PDF Library 是一个高性能、全面的工具,专为企业在各种应用中处理 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 文档的 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 进行定制,包括设置页面大小、方向、边距和页眉/页脚。 您还可以向页眉和页脚添加动态内容,如页码或文档元数据。

运作机制

  • 向 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 转换的 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 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 是不错的选择。 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 转换、表单处理和增强的安全性。

用于基础 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 库如何惠及企业应用?

Syncfusion PDF 库为企业应用提供了全面的功能,包括表单处理、数字签名和加密,非常适合复杂的专业需求。

IronPDF 是否兼容即将发布的 .NET 10 版本?

是的——IronPDF 开箱即用,支持 .NET 10。它与 .NET 9、8、7、6、Core、Standard 和 Framework 版本一样,均被列为 .NET 10 的兼容版本,无需任何特殊设置。(ironpdf.com)

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。