PDFSharpvs IronPDF:.NET 中的低階繪圖 vs 基於 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 允許開發人員利用網路技術來建立文件。 開發人員不需要計算 X,Y 位置,而是撰寫 HTML 和 CSS 來定義文件結構和樣式。 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)| | **執照** |MIT (免費)| 商業的 | |**更新**|不經常|常規| 對於有網頁開發經驗的開發人員而言,IronPDF 基於 HTML 的方法可將現有技能轉移到 PDF 生成上。 對於需要精細控制個別像素或來自 GDI+ 背景的開發人員而言,PDFSharp 提供了熟悉的模式。 ## HTML 至 PDF 轉換 將 HTML 內容轉換為 PDF 展示了這些函式庫之間的基本能力差距。 **PDFSharp HTML-to-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-to-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 至IronPDF轉換的詳細指引,請參閱 [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 PDF
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 `
` 標籤與 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()代碼>` 帶邊框| |`XFont`|CSS `font-family`, `font-size`|標準 CSS| |`XBrush`、`XPen`|CSS 顏色/邊框|`顏色`, `背景顏色`| |`XRect`|CSS 定位|`margin`, `padding`, `width`, `height`.| ### 命名空間變更 |PDFSharp|IronPDF| |----------|---------| |<編碼>PdfSharp.Pdf編碼>IronPdfPdfSharp.繪圖IronPdf`| 需要現代 CSS 排版、自動分頁或基於 HTML 模板生成的應用程式會從 IronPdf 的方法中獲益良多。 ## 當團隊考慮從PDFSharp轉移到IronPDF時。 有幾個因素驅使團隊評估 IronPdf 作為PDFSharp的替代品: **減少開發時間**:PDFSharp 需要計算每個元素的 X、Y 位置。 花費大量時間在座標計算和分頁處理的團隊,通常會發現以 HTML/CSS 為基礎的生成速度大幅提升。 **現代 CSS 要求**:PDFSharp 無法呈現現代 CSS 功能,例如 flexbox、grid 或 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之間的選擇取決於您的專案需求: **ConsiderPDFSharpif**:您的專案需要對文件渲染進行精細控制而不需要額外的依賴,預算限制禁止商業授權,您對基於坐標的定位很熟悉,而且您的文件不需要 HTML/CSS 渲染。 **如果**:您需要支援 CSS3 的現代化 HTML 至 PDF 轉換、您的團隊擁有可利用的網頁開發技能、您想要自動處理文字流程、表格和分頁符號、減少開發時間非常重要,或是您需要主動維護和支援,請考慮 IronPdf。 ## 開始使用 IronPdf 要評估IronPDF是否符合您的 PDF 生成需求: 1.透過 NuGet 安裝:`Install-Package IronPdf`。 2.檢閱 [入門文件](https://ironpdf.com/docs/)。 3.探索[HTML轉PDF教學](https://ironpdf.com/how-to/html-file-to-pdf/)的轉換模式 4.檢查 [API 參考](https://ironpdf.com/object-reference/api/),以取得完整的方法說明文件 [IronPDF教學](https://ironpdf.com/tutorials/)提供全面的範例,涵蓋從基本轉換到進階 PDF 操作的常見情境。 ## 結論 PDFSharp 和IronPDF在 .NET PDF 生成领域满足不同的需求。PDFSharp適用於需要精細控制文件渲染而無需額外依賴的專案,在這些專案中,預算限制是一個因素,而基於座標的繪圖是可以接受的。 然而,對於需要使用現代網路標準或透過 HTML 傳送動態內容的專案而言,這並不足夠。 IronPDF 的強大功能支援 CSS3、HTML5 和高階文件操作,因此在需要將現代 HTML 轉換為 PDF 的情況下,IronPDF 超越了 PDFSharp。 雖然它附有商業授權,但所提高的生產力和現代化功能往往能證明這項投資是值得的。 瞭解您專案的需求 - 無論是成本限制、現代網路支援的需求,或是複雜的文件設計 - 都將引導您在這兩種資料庫產品之間做出選擇。PDFSharp基於坐標的特性會造成開發上的開銷,而IronPDF基於 HTML 的方式則可消除這一開銷,但PDFSharp的 MIT 授權和輕量級足跡對於適當的使用個案仍具有吸引力。 在選擇這些函式庫時,請評估您的完整需求-HTML/CSS 支援需求、開發時間表、維護考量以及預算。 架構上的差異是根本性的,會影響 PDF 生成工作流程的每個層面。