比較

MigraDoc vs IronPDF:技術比較指南

MigraDocvs IronPDF:程式化文件模型 vs 基於 HTML 的 PDF 產生。

當 .NET 開發人員需要產生 PDF 文件時,他們會遇到兩種根本不同的方法:使用MigraDoc等函式庫進行程式化文件建構,或使用IronPDF等工具進行基於 HTML 的渲染。 本比較針對關鍵技術層面檢視這兩個函式庫,以協助開發人員、架構師和技術決策者選擇適合其 PDF 產生工作流程的方法。

什麼是 MigraDoc? MigraDoc 是建構在 PDFSharp 之上的開放原始碼文件物件模型,以 MIT 授權釋出。 該函式庫提供了一個高階抽象層,使用文字處理概念如 `Document`, `Section`, `Paragraph`, `Table`, 和 `Chart` 來程式化地建立結構化文件。 MigraDoc 的方法要求開發人員透過程式碼逐個元素建構文件。 每一項內容 - 標題、段落、表格、圖片 - 都必須使用MigraDoc專屬的 API 明確地建立與設定。 然後,函式庫會使用<代碼>PdfDocumentRenderer什麼是 IronPDF? [IronPDF](https://ironpdf.com/) 是一個商用的 .NET 函式庫,可使用內嵌的 Chromium 渲染引擎將 HTML、CSS 和 JavaScript 轉換成 PDF 文件。開發人員不需要以程式化的方式建構文件,而是使用熟悉的網頁技術建立內容,並讓IronPDF處理轉換。 [ChromePdfRenderer](https://ironpdf.com/object-reference/api/IronPdf.ChromePdfRenderer.html) 類用作轉換的主要介面。 開發人員將 HTML 字串、檔案或 URL 傳送至渲染方法,IronPDF 即會產生完全忠於原始網頁內容的 PDF 文件 - 包括 CSS 定義、網頁字型和 JavaScript 產生的內容。 這種以 HTML 為基礎的方法可讓團隊利用現有的網頁開發技能和設計工具,有可能在網頁應用程式和 PDF 輸出之間共用範本。 ## 文件建立範例比較 MigraDoc 與IronPDF的根本差異在於開發人員如何定義文件內容。 這種架構上的區別會影響程式碼的複雜性、學習曲線以及造型的靈活性。 |特點|MigraDoc|IronPDF| |---------|----------|---------| |**內容定義**|程式化 (文件/章節/段落)|HTML/CSS| |**學習曲線**|Steep (專屬 DOM)|簡易(網路技能)| |**風格**|屬性有限|完整的 CSS3| | **JavaScript 支援** |無|完整的 Chromium 執行| |**表格**|手動定義列/行|HTML `` 搭配 CSS| |**圖表**|MigraDoc 基本圖表|任何 JavaScript 圖表庫| |**圖片**|手冊尺寸/定位|標準 HTML ` related to MigraDocvs IronPDF:程式化文件模型 vs 基於 HTML 的 PDF 產生。`| |**反應式佈局**|不支援|Flexbox、網格| | **執照** |開放原始碼 (MIT)| 商業的 | MigraDoc 要求開發人員掌握其專屬的文件模型。 每種元素類型都有特定的 API 用於建立和設定。IronPDF開發人員使用的 HTML 元素和 CSS 屬性,他們很可能已經在網頁開發中有所了解。 ## HTML 至 PDF:基本差異 這些函式庫最顯著的區別之一就是 HTML 支援。MigraDoc不直接支援 HTML - 開發人員必須使用 API 手動建立文件結構。 **MigraDoc 方法(不支援 HTML):** ```csharp // NuGet: Install-Package PdfSharp-MigraDoc-GDI using MigraDoc.DocumentObjectModel; using MigraDoc.Rendering; using System.Diagnostics; class Program { static void Main() { //MigraDocdoesn't support HTML directly // Must manually create document structure Document document = new Document(); Section section = document.AddSection(); Paragraph paragraph = section.AddParagraph(); paragraph.AddFormattedText("Hello World", TextFormat.Bold); paragraph.Format.Font.Size = 16; PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer(); pdfRenderer.Document = document; pdfRenderer.RenderDocument(); pdfRenderer.PdfDocument.Save("output.pdf"); } } ``` **IronPDF 方法(本機 HTML 支援):** ```csharp // NuGet: Install-Package IronPdf using IronPdf; class Program { static void Main() { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("

Hello World

"); pdf.SaveAs("output.pdf"); } } ``` 代碼比較揭示了基本範式的差異。MigraDoc要求創建一個 `Document`, 加入一個 `Section`, 加入一個 `Paragraph`, 然後使用 `AddFormattedText()` 與明確的格式化參數。IronPDF直接接受 HTML,並透過單一方法呼叫進行渲染。 對於擁有現有 HTML 模板、電子郵件設計或需要轉換 PDF 的網頁內容的團隊而言,MigraDoc 需要以程式化的方式重建這些設計。 IronPdf 的 [HTML 至 PDF 轉換](https://ironpdf.com/how-to/html-file-to-pdf/)可直接重複使用現有的網頁內容。 ## 在 PDF 中建立表格 表格是發票、報告和資料匯出等商業文件的常見需求。 兩個函式庫的實作複雜度差異很大。 **MigraDoc 表格建立:** ```csharp // NuGet: Install-Package PdfSharp-MigraDoc-GDI using MigraDoc.DocumentObjectModel; using MigraDoc.DocumentObjectModel.Tables; using MigraDoc.Rendering; class Program { static void Main() { Document document = new Document(); Section section = document.AddSection(); Table table = section.AddTable(); table.Borders.Width = 0.75; Column column1 = table.AddColumn("3cm"); Column column2 = table.AddColumn("3cm"); Row row1 = table.AddRow(); row1.Cells[0].AddParagraph("Name"); row1.Cells[1].AddParagraph("Age"); Row row2 = table.AddRow(); row2.Cells[0].AddParagraph("John"); row2.Cells[1].AddParagraph("30"); PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer(); pdfRenderer.Document = document; pdfRenderer.RenderDocument(); pdfRenderer.PdfDocument.Save("table.pdf"); } } ``` **IronPDF 表格創建:** ```csharp // NuGet: Install-Package IronPdf using IronPdf; class Program { static void Main() { var renderer = new ChromePdfRenderer(); string htmlTable = @"
NameAge
John30
"; var pdf = renderer.RenderHtmlAsPdf(htmlTable); pdf.SaveAs("table.pdf"); } } ``` MigraDoc 要求明確建立表格結構:新增具特定寬度的列、建立行、依索引存取儲存格,以及為每個儲存格新增段落。 對於一個簡單的兩列兩行表格,此方法的行數超過 20 行。 IronPDF 使用網頁開發人員已經熟悉的標準 HTML 表格語法。 CSS 可應用於進階造型,包括邊框、背景、單元格襯墊和反應式佈局。 [表格格式化功能](https://ironpdf.com/tutorials/)可延伸至現代瀏覽器支援的任何 CSS 造型。 ## 頁首與頁尾。 專業文件通常需要在頁首和頁尾加上頁碼、日期或公司品牌。 兩個函式庫都以不同的方式支援此功能。 **MigraDoc 標題和頁腳:** ```csharp // NuGet: Install-Package PdfSharp-MigraDoc-GDI using MigraDoc.DocumentObjectModel; using MigraDoc.Rendering; class Program { static void Main() { Document document = new Document(); Section section = document.AddSection(); // Add header Paragraph headerPara = section.Headers.Primary.AddParagraph(); headerPara.AddText("Document Header"); headerPara.Format.Font.Size = 12; headerPara.Format.Alignment = ParagraphAlignment.Center; // Add footer Paragraph footerPara = section.Footers.Primary.AddParagraph(); footerPara.AddText("Page "); footerPara.AddPageField(); footerPara.Format.Alignment = ParagraphAlignment.Center; // Add content section.AddParagraph("Main content of the document"); PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer(); pdfRenderer.Document = document; pdfRenderer.RenderDocument(); pdfRenderer.PdfDocument.Save("header-footer.pdf"); } } ``` **IronPDF 標頭和頁腳:** ```csharp // NuGet: Install-Package IronPdf using IronPdf; class Program { static void Main() { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("

Main content of the document

"); pdf.AddTextHeader("Document Header"); pdf.AddTextFooter("Page {page}"); pdf.SaveAs("header-footer.pdf"); } } ``` MigraDoc 需要存取章節上的 `Headers.Primary` 和 `Footers.Primary` 集合,在其中建立段落,並使用`新增頁面欄位()`。等特殊方法插入頁碼。 IronPDF 提供了一些方便的方法,如 `AddTextHeader()` 和 `AddTextFooter()` 等,這些方法可以在 PDF 文件渲染後調用。`{page}`占位符會自動插入目前的頁碼。IronPDF還透過 `RenderingOptions.HtmlHeader` 和 `RenderingOptions.HtmlFooter` 屬性,支援 [ 複雜設計的基於 HTML 的頁首和頁尾](https://ironpdf.com/how-to/html-headers-footers/)。 ### 占位符語法比較 在頁首和頁尾使用動態內容時,語法有所不同: |MigraDoc 方法|IronPdf 占位符|目的| |----------------|---------------------|---------| |`新增頁面欄位()`。|`{page}`|目前頁數| |`AddNumPagesField()`|`{總頁數}`|總頁數| |`新增日期欄位()`|<編碼>{日期}ChromePdfRenderer部分` 或 `
`|結構容器| |`段落`|HTML `

`, `

` 等。|文字元素| |`格式化文字`|HTML ``, `` 等。|內嵌格式| |`表格`|HTML ``|使用 CSS 設計| |`行`|HTML ``|表列| |<編碼>欄位` 或 CSS|欄位造型| |`Cell`|HTML `
`, ``|表格單元| |`圖片`|HTML ` related to Main content of the document`|具有 src 屬性| |`風格`|CSS 類別或內嵌式樣式|完整的 CSS 支援| |`頁首頁腳`|<編碼>RenderingOptions.HtmlHeader/FooterRenderingOptions.*PdfDocumentRendererChromePdfRenderer