使用IRONPDF

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

发布 2024年十二月16日
分享:

C# 生成 PDF 的功能对于许多现代应用程序(从创建报告到发票系统)都至关重要。 在本文中,我们将探讨六种常用的方法来生成PDF译文必须使用 C# 编写文件,突出基于代码的库,如:.NET、Java、Python 或 Node js。IronPDF翻译的内容包括:.NET、Java、Python 或 Node js。 无论您是需要在网络应用程序中动态生成 PDF 文件,还是只需从现有文档创建 PDF 文件,这些工具都能满足您的需求。

1. IronPDF

破损图片 添加自 Pixabay,请从您的文件中选择或将图片拖放到此处。

IronPDF是一款优质的 .NET PDF 库,专为需要将 HTML 转换为 PDF 文件的开发人员设计。 IronPDF 使用基于 Chromium 的渲染引擎来确保精确的转换,使其成为想要用 C# 将 HTML 页面或基于 Web 的报告转换为 PDF 文件的 Web 应用程序的最佳选择。 该工具以其对现有 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. 名称空间导入使用 IronPdf;导入 IronPDF 库以访问其类和方法。

  2. HTML 字符串:变量 HTML 包含您要转换为 PDF 的 HTML 内容。

  3. 渲染器实例new ChromePdfRenderer(); 创建 HtmlToPdf 类的实例,该类提供将 HTML 内容渲染为 PDF 格式的方法。

  4. 渲染 PDFPdfDocument PDF = renderer.RenderHtmlAsPdf(html); 将 HTML 字符串转换为 PDF 文档。

  5. 保存 PDFpdf.SaveAs("生成.pdf); 将生成的 PDF 保存到指定的文件路径。

优点

  • 为网页内容提供出色的渲染质量。
  • 强大的表单、超链接和书签支持。

幻灯片

  • 对于大型项目,许可费可能是一个考虑因素。
  • 更高级的功能可能需要更深入的学习。

2. iTextSharp

C# Generate 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. 生成:该方法处理 HTML 到 PDF 的转换。

      • 它将初始化一个 MemoryStream,以便在内存中保存生成的 PDF。

      • 它创建了一个 iTextSharp 文档对象,页面大小为**信纸大小。
    • XMLWorkerHelper 会解析 HTML 内容,并使用提供的 StringReader 将其写入 PDF 文档。

    4.

优点

  • 高度可定制,功能丰富。
  • 广泛的文档和社区支持。

幻灯片

  • iTextSharp(该翻译软件可免费供个人使用,但大型项目需要商业许可。)在处理复杂的 CSS 或 JavaScript 时可能会受到限制。
  • XMLWorker(此处使用)是 iTextSharp 中用于解析 HTML/CSS 的过时工具。 iText7(较新版本的 iText)该版本使用了更强大的 HTML 解析器 pdfHTML,可以更好地支持现代网络标准。
  • 初学者学习曲线较长。

3.PDFsharp

C# Generate 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#
  • PDF文档:代表整个 PDF 文档。 您可以添加页面、设置元数据和操作文档。
  • PdfPage:代表文档中的单个页面。 使用 AddPage 方法添加新页面。
  • XGraphics:用于在特定页面上绘制文本、图像和形状。 它类似于 .NET 中的 GDI+。
  • XFont:指定文本渲染的字体和样式。 在本例中,使用了 "Verdana "加粗样式。
  • DrawString:在文档中指定的位置绘制指定的字符串。

优点

  • 免费开源,无许可限制。
  • 简单轻便,易于上手基本的 PDF 生成。
  • 适用于不需要复杂功能的项目。

幻灯片

  • 与其他库相比,功能有限。
  • 不支持将 HTML 转换为 PDF。

4.Syncfusion PDF 库

C# Generate 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#
  • PDF文档:代表 PDF 文档。 您可以添加页面、设置属性并操作其内容。
  • PDF页面:代表 PDF 文档中的一个页面。
  • PdfFont:定义用于渲染文本的字体。 在本例中,使用了标准的 Helvetica 字体。
  • DrawString:在给定坐标处将指定字符串绘制到 PDF 页面上。

优点

  • 功能丰富,适合创建复杂的 PDF。
  • 专业的支持和文档使其成为大规模应用的理想选择。
  • 支持填表、加密和注释等高级 PDF 功能。

幻灯片

  • 商业用途的许可费用相对较高。
  • 复杂的 API,可能需要时间来掌握。

5.PDFShift(在线工具)

C# Generate 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:以 POST 请求的形式向 PDFShift API 发送 HTML 内容。
  • PostAsync:向 API 发送请求,由 API 处理 HTML 并返回 PDF。
  • ReadAsByteArrayAsync:以字节数组的形式读取 PDF 响应,然后将其保存为文件。

优点

  • 简单的 API,最少的设置。
  • 非常适合需要将动态 HTML 转换为 PDF 的网络应用程序。
  • 无需管理 PDF 库或服务器。

幻灯片

  • 仅限于 HTML 到 PDF 的转换; 不支持更复杂的 PDF 功能。
  • 需要互联网连接,达到一定使用量后会产生费用。

6.DocRaptor(在线工具)

C# Generate 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 密钥:使用 DocRaptor 时,您必须提供一个 API 密钥以进行身份验证。 将 "YOUR_API_KEY "替换为您的实际密钥。
  • JsonData:该 JSON 字符串包含 HTML 内容、文档名称和类型(本例中的 PDF).
  • PostAsync:将 HTML 内容和参数发送到 DocRaptor API 以生成 PDF。

优点

  • 高质量渲染,完全支持 HTML、CSS 和 JavaScript。
  • 文档布局和安全性的高级定制选项。
  • 无需维护 PDF 生成库或基础设施。

幻灯片

  • 在超过免费使用限制后提供付费服务。
  • 取决于互联网连接。

7.无代码在线工具

如果您不想编写代码或需要快速生成 PDF 的解决方案,有几款在线工具可以让您快速轻松地创建 PDF。 以下是几个值得注意的选项:

7.1.小型 PDF

C# Generate 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# Generate 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 糖果

C# Generate 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# Generate 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 断页修复(开发人员教程)