比较

PDFSharp 与 IronPDF:技术比较指南

PDFSharp与 IronPDF:.NET中的低级绘图与基于HTML的PDF生成。

当 .NET 开发人员需要以编程方式创建 PDF 文档时,他们通常会考虑使用PDFSharp和IronPDFfor .NET。PDFSharp一直是通过基于坐标的绘图方法创建 PDF 的热门选择,而IronPDF则提供 HTML 到 PDF 的转换,并支持现代 CSS。 本比较研究了这两个库,分析了它们的架构差异、API 模式以及对不同开发场景的适用性。

什么是 PDFSharp? PDFSharp 是一个低级 PDF 创建库,允许开发人员通过基于坐标的编程方式生成 PDF 文档。PDFSharp根据 MIT 许可发布,允许开发人员自由使用和修改,无需支付许可费用。 PDFSharp 主要用作从零开始绘制和编译 PDF 的工具。 该库使用 GDI+ 风格的 API,开发人员使用 X、Y 坐标定位每个元素。 这种方法需要计算文本、图像、线条和矩形的准确位置,类似于在画布上绘图。 PDFSharp 的主要特点包括 - **基于坐标的绘图**:每个元素都需要明确的 X、Y 定位 - **MIT 许可**:可自由使用、修改和分发 - **GDI+ Style API**:使用 `XGraphics`, `XFont`, `XBrush` 和 `XPen` 类。 - **手动页面管理**:开发人员手动处理页面创建和溢出 - **不支持 HTML**:无法直接将 HTML/CSS 转换为 PDF - **轻量级**:无外部依赖性,简化部署 PDFSharp 有时会被误认为是 HTML 到 PDF 的转换器,其实不然。 其目的仅限于编程式 PDF 文档创建。 虽然有一个插件 HtmlRenderer.PdfSharp 可以提供 HTML 渲染功能,但它只支持 CSS 2.1,不支持 flexbox 和 grid 等现代 CSS 功能,并且存在表格渲染不完整等限制。

什么是 IronPDF? [IronPDF](https://ironpdf.com/) 是一个全面的 .NET 库,可使用嵌入式 Chromium 渲染引擎提供本地 HTML 到 PDF 的转换。[ChromePdfRenderer](https://ironpdf.com/object-reference/api/IronPdf.ChromePdfRenderer.html) 类转换 HTML 内容时完全支持 HTML5、CSS3 和 JavaScript--包括 flexbox 和 grid 等现代布局功能。 与PDFSharp基于坐标的方法不同,IronPDF 允许开发人员利用网络技术创建文档。 开发人员编写 HTML 和 CSS 来定义文档结构和样式,而不是计算 X、Y 位置。 Chromium 引擎可自动处理文本流、分页符和元素定位。 ## 架构比较 PDFSharp 和IronPDF的根本区别在于它们创建文档的方法:基于坐标的手动绘制与基于 HTML 的渲染。 |方面|PDFSharp|IronPDF| |--------|----------|---------| |**文档创建**|基于坐标的绘图|HTML/CSS 模板| |**布局系统**|手动 X、Y 定位|CSS Flow/Flexbox/Grid| |**分页符**|手工计算|自动 + CSS 控制| |**表格**|单独绘制单元格|HTML ``| |**样式**|基于代码的字体/颜色|CSS 样式表| |**维护**|难以修改|编辑 HTML/CSS| |**学习曲线**|要求具备 GDI+ 知识|网络技能转移| |**HTML 转 PDF 支持**| 否 |是(支持 HTML5/CSS3)| |**现代 CSS 支持**|否(通过附加组件仅支持 CSS 2.1)|是(全 CSS3)| |**许可**|麻省理工学院(免费)|商业翻译| |**更新**|不经常|常规翻译| 对于具有网络开发经验的开发人员来说,IronPDF 基于 HTML 的方法可将现有技能转移到 PDF 生成上。 对于需要对单个像素进行精细控制或来自 GDI+ 背景的开发人员来说,PDFSharp 提供了熟悉的模式。 ## HTML 至 PDF 转换 将 HTML 内容转换为 PDF 显示了这些库之间的基本能力差距。 **PDFSharp HTML 转 PDF 方法:** ```csharp // NuGet: Install-Package PdfSharp using PdfSharp.Pdf; using PdfSharp.Drawing; using System; class Program { static void Main() { //PDFSharpdoes not have built-in HTML to PDF conversion // You need to manually parse HTML and render content PdfDocument document = new PdfDocument(); PdfPage page = document.AddPage(); XGraphics gfx = XGraphics.FromPdfPage(page); XFont font = new XFont("Arial", 12); // Manual text rendering (no HTML support) gfx.DrawString("Hello from PDFSharp", font, XBrushes.Black, new XRect(0, 0, page.Width, page.Height), XStringFormats.TopLeft); document.Save("output.pdf"); } } ``` **IronPDF HTML 转 PDF 方法:** ```csharp // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { //IronPDFhas native HTML to PDF rendering var renderer = new ChromePdfRenderer(); string html = "

Hello from IronPDF

Easy HTML to PDF conversion

"; var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf"); } } ``` PDFSharp 无法将 HTML 转换为 PDF。 该库需要手动渲染,开发人员必须自己解析 HTML 并使用坐标绘制每个元素。 IronPdf 的 `ChromePdfRenderer` 本机接受 HTML 字符串,并通过嵌入式 Chromium 引擎以完全支持 CSS 的方式进行渲染。 这种能力差异极大地影响了开发时间。在PDFSharp中创建样式文档需要计算每个元素的位置,而IronPDF开发人员编写的是标准的 HTML/CSS。 有关 HTML 转 PDF 的详细指导,请参阅 [HTML 转 PDF 教程](https://ironpdf.com/how-to/html-file-to-pdf/)。 ## 为现有 PDF 添加文本 修改现有 PDF 文件以添加文本展示了不同的文档操作方法。 **PDFSharp向PDF添加文本:** ```csharp // NuGet: Install-Package PdfSharp using PdfSharp.Pdf; using PdfSharp.Pdf.IO; using PdfSharp.Drawing; using System; class Program { static void Main() { // Open existing PDF PdfDocument document = PdfReader.Open("existing.pdf", PdfDocumentOpenMode.Modify); PdfPage page = document.Pages[0]; // Get graphics object XGraphics gfx = XGraphics.FromPdfPage(page); XFont font = new XFont("Arial", 20, XFontStyle.Bold); // Draw text at specific position gfx.DrawString("Watermark Text", font, XBrushes.Red, new XPoint(200, 400)); document.Save("modified.pdf"); } } ``` **IronPDF 向 PDF 添加文本:** ```csharp // NuGet: Install-Package IronPdf using IronPdf; using IronPdf.Editing; using System; class Program { static void Main() { // Open existing PDF var pdf = PdfDocument.FromFile("existing.pdf"); // Add text stamp/watermark var textStamper = new TextStamper() { Text = "Watermark Text", FontSize = 20, Color = IronSoftware.Drawing.Color.Red, VerticalAlignment = VerticalAlignment.Middle, HorizontalAlignment = HorizontalAlignment.Center }; pdf.ApplyStamp(textStamper); pdf.SaveAs("modified.pdf"); } } ``` PDFSharp 使用<代码>PdfReader.Open()PdfDocument.FromFile()Image in PDFImage related to Hello from IronPDF

Easy image embedding with HTML

"; var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf"); // Alternative: Add image to existing PDF var existingPdf = new ChromePdfRenderer().RenderHtmlAsPdf("

Document

"); var imageStamper = new IronPdf.Editing.ImageStamper(new Uri("image.jpg")) { VerticalAlignment = IronPdf.Editing.VerticalAlignment.Top }; existingPdf.ApplyStamp(imageStamper); } } ``` PDFSharp 要求使用 `XImage.FromFile()` 加载图像,然后使用 `gfx.DrawImage(image, x, y, width, height)` 在特定坐标处绘制图像。 文本必须通过计算坐标与图像相对定位。 IronPdf 允许使用标准 HTML ` related to Document` 标记和 CSS 样式嵌入图片。 Chromium 引擎通过 CSS 属性处理图片的加载、大小和定位。 另外,`ImageStamper` 还可以通过基于对齐的定位将图像添加到现有的 PDF 中。 ## API 映射参考 对于评估将PDFSharp移植到IronPDF的团队来说,了解 API 映射有助于估算开发工作量。 ### 核心类 |PDFSharp|IronPDF|备注| |----------|---------|-------| |<代码>new PdfDocument()ChromePdfRenderer.RenderHtmlAsPdf()document.AddPage()XGraphics.FromPdfPage()document.Save()pdf.SaveAs()PdfReader.Open()PdfDocument.FromFile()document.Pages.Countpdf.PageCountXGraphics.DrawString()`, `

` 等。|使用 CSS 定位| |<代码>XGraphics.DrawImage()` 标记|使用 CSS 定位| |<代码>XGraphics.DrawLine()` 或 CSS 边框| |<代码>XGraphics.DrawRectangle()` 带边框| |<代码>XFontXBrush,<代码>XPen颜色,<代码>背景颜色XRect边距,<代码>边距,<代码>宽度,<代码>高度PdfSharp.PdfIronPdfPdfSharp.DrawingPdfSharp.Pdf.IOIronPdf`| 需要现代 CSS 布局、自动分页或基于 HTML 模板生成的应用程序将从 IronPdf 的方法中受益匪浅。 ## 团队何时考虑从PDFSharp迁移到 IronPDF? 有几个因素促使团队将IronPDF作为PDFSharp的替代品进行评估: **减少开发时间**:PDFSharp 需要计算每个元素的 X、Y 位置。 花费大量时间进行坐标计算和分页处理的团队通常会发现基于 HTML/CSS 的生成速度要快得多。 **现代 CSS 要求**:PDFSharp 无法呈现现代 CSS 功能,如柔性框、网格或 CSS3 选择器。 需要现代网络布局的应用程序必须使用 IronPdf 的 Chromium 引擎。 **可维护性问题**:基于坐标的PDFSharp代码很难修改,更改一个元素往往需要调整后续元素的位置。 HTML/CSS 模板更易于更新。 **Web开发技能转移**:拥有HTML/CSS专业知识的团队可以将现有技能应用于IronPDF的PDF生成,而不是学习GDI+风格的绘图API。 **复杂文档要求**:带有表格、混合内容或动态布局的文档对于基于坐标的定位变得越来越困难。 HTML 模板能更自然地处理复杂性。 **主动维护需求**:PDFSharp 不经常更新。 需要定期打安全补丁和功能更新的团队可从IronPDF的积极开发中获益。 ## 安装比较 **PDFSharp 安装:** ```bash Install-Package PdfSharp ``` 轻量级,无外部依赖性。 **安装 IronPdf:** ```bash Install-Package IronPdf ``` IronPdf 需要配置许可证密钥: ```csharp IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; ``` IronPdf 的 Chromium 引擎提供了全面的渲染功能,但与PDFSharp的轻量级方法相比,占用空间较大。 该库支持 .NET Framework、.NET Core、.NET 5+,并向前兼容到 .NET 10 和 C# 14。 ## 做出决定 在PDFSharp和IronPDF之间做出选择取决于您的项目要求: **如果**:您的项目需要在没有额外依赖关系的情况下对文档渲染进行精细控制,预算限制禁止商业授权,您可以轻松使用基于坐标的定位,并且您的文档不需要 HTML/CSS 渲染,那么请考虑使用 PDFSharp。 **如果**:您需要支持 CSS3 的现代 HTML 到 PDF 转换,您的团队拥有可利用的网络开发技能,您希望自动处理文本流、表格和分页符,缩短开发时间非常重要,或者您需要主动维护和支持,请考虑 IronPDF。 ## 开始使用 IronPDF 如需评估 IronPdf 是否满足您的 PDF 生成需求,请联系我们: 1.通过 NuGet 安装:<代码>安装-打包 IronPdf入门文档