2025指南:最好的C# PDF庫(免費優先,根據需要付費)
大多數人想到 PDF(便攜式文件格式)時,都會想到一個包含大量資訊的文件。 他們的說法是正確的,因為目前 PDF 是資訊共享中最常用的文件格式,並且已經成為一種標準。 但是,當程式設計師查看 PDF 文件時,他們看到的不僅僅是資訊; 他們會分析其格式、內容類型和其他技術面。
以程式設計方式建立 PDF 檔案時,保持內容結構是最重要的任務。 但這並非易事,因為我們所說的內容,不僅指文本,還包括圖像、圖表、音訊甚至視訊。 此外,以程式方式編輯 PDF 檔案現在也是常見需求。
在人工智慧時代,我們希望完全掌控PDF文件。 有時我們需要根據政策要求編輯文本,保護 PDF 文件以確保敏感文件的安全,提取資料進行處理,或動態生成報告。 這些流程有很多應用場景。 以下是開發人員在以程式設計方式處理 PDF 檔案時經常遇到的問題:
如何在處理各種媒體內容的同時,保持 PDF 文件的格式佈局?
以正確順序提取文本,尤其是在文本分列顯示的情況下。
處理包含大量頁面的PDF文件時遇到的記憶體限制
表單處理是開發人員面臨的一個主要問題。
- 將 PDF 文件轉換為其他合適的文件類型
為了簡化這項任務,PDF庫就派上用場了。 在本文中,我們將討論多個C# PDF 庫,例如IronPDF和 Aspose.PDF,以及它們的定價模式。 我們將深入探討實際用例,並了解這些函式庫如何透過幾個步驟輕鬆地以程式設計方式建立和操作 PDF,並使其達到生產就緒狀態。
1. IronPDF:C# PDF 庫
IronPDF是一個全面的 .NET PDF 庫,開發人員可以使用它來建立、編輯 PDF 文件、將 PDF 文件轉換為任何其他格式以及執行更多 PDF 操作。 它在處理大型 PDF 檔案時佔用記憶體極少。 它完全在您的本機電腦上運行,因此您無需依賴伺服器層級的處理即可使用它。
該程式庫也相容於最新的 .NET Framework,並且與 .NET 專案的整合非常流暢。 您只需在 NuGet 套件管理器中執行以下命令,IronPDF 即可在專案中使用:
Install-Package IronPdf您無需安裝任何其他庫,因為它完全獨立於外部依賴項。 安裝此程式庫時,它會自動一次安裝所有必要的依賴項。
IronPDF 最重要的特點是能夠以像素級的精度將 HTML 轉換為 PDF 。 IronPDF 提供了多種從 HTML 內容建立 PDF 文件的方法。 您可以將 HTML 字串、HTML 檔案或 URL 直接轉換為 PDF。 它還支援 CSS 和 JavaScript,以確保生成的 PDF 文件能夠準確反映原始 HTML 渲染效果。
除了基本操作外,IronPDF 還支援 PDF 表單、全方位加密和新增數位簽章。 您可以從PDF文件中提取圖像和文字。 您也可以新增文字或 HTML 頁首和頁尾,合併和分割 PDF,修改多個文字段,以及尋找和取代文字。 IronPDF不僅支援從HTML建立PDF,還支援從DOCX、RTF、MD和影像檔案轉換為PDF。 該函式庫非常輕量級,記憶體管理效率很高(基本操作所需記憶體不到 10MB )。 IronPDF 會追蹤其在穩定性和效能方面的里程碑,您可以從這裡存取這些里程碑。
IronPDF提供多層次的支援。 您可以透過線上聊天、建立工單或電子郵件聯繫工程師。 支援團隊全天候 24 小時在線上。 IronPDF 還提供詳細的教學和文檔,涵蓋您可能需要了解或有疑問的幾乎所有主題。
IronPDF 是一個可用於生產環境的庫,經過測試、優化,並被許多知名公司信賴,用於其實際產品中。 這使其成為專案中進行 PDF 操作的最佳 PDF 庫之一。 讓我們來看一個 IronPDF 庫的程式碼範例。
程式碼範例
將 HTML 轉換為 PDF
using IronPdf;
var renderer = new ChromePdfRenderer();
// 1. HTML String to PDF
var pdf1 = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf1.SaveAs("html-string.pdf");
// 2. HTML String with Assets (Images, CSS, JS)
var pdf2 = renderer.RenderHtmlAsPdf(
"<img src='logo.png'><link rel='stylesheet' href='style.css'>",
@"C:\assets\"
);
pdf2.SaveAs("html-with-assets.pdf");
// 3. HTML File to PDF
var pdf3 = renderer.RenderHtmlFileAsPdf("example.html");
pdf3.SaveAs("html-file.pdf");
// 4. URL to PDF
var pdf4 = renderer.RenderUrlAsPdf("https://ironpdf.com");
pdf4.SaveAs("url.pdf");using IronPdf;
var renderer = new ChromePdfRenderer();
// 1. HTML String to PDF
var pdf1 = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf1.SaveAs("html-string.pdf");
// 2. HTML String with Assets (Images, CSS, JS)
var pdf2 = renderer.RenderHtmlAsPdf(
"<img src='logo.png'><link rel='stylesheet' href='style.css'>",
@"C:\assets\"
);
pdf2.SaveAs("html-with-assets.pdf");
// 3. HTML File to PDF
var pdf3 = renderer.RenderHtmlFileAsPdf("example.html");
pdf3.SaveAs("html-file.pdf");
// 4. URL to PDF
var pdf4 = renderer.RenderUrlAsPdf("https://ironpdf.com");
pdf4.SaveAs("url.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.com從PDF文件中提取文字和圖像
using IronPdf;
using IronSoftware.Drawing;
using System.Collections.Generic;
// Load PDF document
var pdf = PdfDocument.FromFile("sample.pdf");
// 1. Extract All Text
string allText = pdf.ExtractAllText();
// 2. Extract Text from Specific Page
string pageText = pdf.ExtractTextFromPage(0);
// 3. Extract Text from Multiple Pages
for (int i = 0; i < pdf.PageCount; i++)
{
string text = pdf.ExtractTextFromPage(i);
Console.WriteLine($"Page {i + 1}: {text}");
}
// 4. Extract All Images
var allImages = pdf.ExtractAllImages();
foreach (var image in allImages)
{
image.SaveAs($"image_{allImages.IndexOf(image)}.png");
}
// 5. Extract Images from Specific Page
List<AnyBitmap> pageImages = pdf.ExtractBitmapsFromPage(0);
// 6. Extract Raw Images (as byte arrays)
var rawImages = pdf.ExtractAllRawImages();
for (int i = 0; i < rawImages.Count; i++)
{
System.IO.File.WriteAllBytes($"raw_image_{i}.png", rawImages[i]);
}
// 7. Extract Both Text & Images from Each Page
for (int i = 0; i < pdf.PageCount; i++)
{
string text = pdf.ExtractTextFromPage(i);
List<AnyBitmap> images = pdf.ExtractBitmapsFromPage(i);
Console.WriteLine($"Page {i + 1}: {text}");
Console.WriteLine($"Found {images.Count} images");
}using IronPdf;
using IronSoftware.Drawing;
using System.Collections.Generic;
// Load PDF document
var pdf = PdfDocument.FromFile("sample.pdf");
// 1. Extract All Text
string allText = pdf.ExtractAllText();
// 2. Extract Text from Specific Page
string pageText = pdf.ExtractTextFromPage(0);
// 3. Extract Text from Multiple Pages
for (int i = 0; i < pdf.PageCount; i++)
{
string text = pdf.ExtractTextFromPage(i);
Console.WriteLine($"Page {i + 1}: {text}");
}
// 4. Extract All Images
var allImages = pdf.ExtractAllImages();
foreach (var image in allImages)
{
image.SaveAs($"image_{allImages.IndexOf(image)}.png");
}
// 5. Extract Images from Specific Page
List<AnyBitmap> pageImages = pdf.ExtractBitmapsFromPage(0);
// 6. Extract Raw Images (as byte arrays)
var rawImages = pdf.ExtractAllRawImages();
for (int i = 0; i < rawImages.Count; i++)
{
System.IO.File.WriteAllBytes($"raw_image_{i}.png", rawImages[i]);
}
// 7. Extract Both Text & Images from Each Page
for (int i = 0; i < pdf.PageCount; i++)
{
string text = pdf.ExtractTextFromPage(i);
List<AnyBitmap> images = pdf.ExtractBitmapsFromPage(i);
Console.WriteLine($"Page {i + 1}: {text}");
Console.WriteLine($"Found {images.Count} images");
}IRON VB CONVERTER ERROR developers@ironsoftware.com編輯PDF文件:頁首和頁尾
using IronPdf;
using System;
var renderer = new ChromePdfRenderer();
// 1. Add Footer with Page Numbers
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
HtmlFragment = "<center><i>{page} of {total-pages}</i></center>",
MaxHeight = 15, // mm
DrawDividerLine = true
};
renderer.RenderingOptions.MarginBottom = 25;
// 2. Add Header with Logo
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
HtmlFragment = "<img src='logo.png'>",
MaxHeight = 20, // mm
BaseUrl = new Uri(@"C:\assets\images\").AbsoluteUri
};
renderer.RenderingOptions.MarginTop = 25;
// 3. Render HTML to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Document Title</h1><p>Content...</p>");
pdf.SaveAs("output.pdf");using IronPdf;
using System;
var renderer = new ChromePdfRenderer();
// 1. Add Footer with Page Numbers
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
HtmlFragment = "<center><i>{page} of {total-pages}</i></center>",
MaxHeight = 15, // mm
DrawDividerLine = true
};
renderer.RenderingOptions.MarginBottom = 25;
// 2. Add Header with Logo
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
HtmlFragment = "<img src='logo.png'>",
MaxHeight = 20, // mm
BaseUrl = new Uri(@"C:\assets\images\").AbsoluteUri
};
renderer.RenderingOptions.MarginTop = 25;
// 3. Render HTML to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Document Title</h1><p>Content...</p>");
pdf.SaveAs("output.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.com表單處理
using IronPdf;
// Load existing PDF with form fields
var pdf = PdfDocument.FromFile("EditableForm.pdf");
// Fill text fields
pdf.Form.FindFormField("firstname").Value = "John";
pdf.Form.FindFormField("lastname").Value = "Smith";
pdf.Form.FindFormField("email").Value = "john.smith@example.com";
// Fill radio button
pdf.Form.FindFormField("gender").Value = "Male";
// Fill dropdown/combobox
pdf.Form.FindFormField("country").Value = "USA";
// Fill checkbox ("Yes" to check, "No" to uncheck)
pdf.Form.FindFormField("subscribe").Value = "Yes";
// Fill textarea (use \r\n for line breaks)
pdf.Form.FindFormField("comments").Value = "This is a comment.\r\nSecond line here.";
// Save filled form
pdf.SaveAs("FilledForm.pdf");using IronPdf;
// Load existing PDF with form fields
var pdf = PdfDocument.FromFile("EditableForm.pdf");
// Fill text fields
pdf.Form.FindFormField("firstname").Value = "John";
pdf.Form.FindFormField("lastname").Value = "Smith";
pdf.Form.FindFormField("email").Value = "john.smith@example.com";
// Fill radio button
pdf.Form.FindFormField("gender").Value = "Male";
// Fill dropdown/combobox
pdf.Form.FindFormField("country").Value = "USA";
// Fill checkbox ("Yes" to check, "No" to uncheck)
pdf.Form.FindFormField("subscribe").Value = "Yes";
// Fill textarea (use \r\n for line breaks)
pdf.Form.FindFormField("comments").Value = "This is a comment.\r\nSecond line here.";
// Save filled form
pdf.SaveAs("FilledForm.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.com從上述範例可以看出,使用 IronPDF,只需幾行程式碼即可對 PDF 檔案執行任何操作。 它非常簡單明了。 方法名稱易於理解和實現。
許可證
IronPDF 可免費用於開發目的,您也可以下載免費試用版。 但要用於生產,您需要購買 IronPDF 的許可證。 IronPDF的許可模式很靈活,提供兩種類型的許可證:
1.訂閱許可
2.永久許可
訂閱授權費用為每月 59 美元(按年計費),其中包括 1 個開發者、1 個專案和每年 15,000 次 API 呼叫。 超出配額後,每次額外的 API 呼叫將收取 0.03 美元。
永久許可證起價為 749 美元,並提供多種選項,您可以根據自己的需求進行選擇。 該許可證最大的優點在於它是分期付款的。 您無需再次付費即可使用 IronPDF。

2. Aspose.PDF for .NET
Aspose.PDF也是 Aspose 開發的 C# PDF 庫,作為其 .NET 庫套件的一部分,廣泛用於商業領域,用於創建複雜報告、敏感文件、自訂 PDF 文件等與 PDF 相關的任務。 它是 C# 中最常用的 PDF 庫之一。 它也支援最新的.NET Framework。
Aspose.PDF 不僅可以從 HTML 內容建立 PDF 文檔,還支援從 XML 文件中提取資料以滿足真實資料需求,而不是建立靜態文件。 此功能對於建立複雜報告非常有用。 與 IronPDF 類似,您可以在 PDF 文件中添加文字、圖像、圖表和許多其他類型的內容。 Aspose.PDF 也提供數位簽章嵌入、註解處理、頁首和頁尾以及從 PDF 檔案中提取文字等功能。 您可以從 PDF 文件中提取結構化資料。 該庫利用上述功能,能夠很好地處理 PDF 編輯。
除了 Aspose.PDF 庫的這些優點之外,它也存在一些缺點。 該庫的主要缺點是價格非常高(起價 1679 美元) ,而且其定價模式非常複雜,難以理解。 與 IronPDF 不同,您需要為每個流程(例如開發和部署)單獨購買模型。 此外,該庫非常消耗資源( 產生包含 400 多張圖片的 PDF 時超過 2GB )。 處理 PDF 操作需要大量內存,這真的很令人沮喪。 毫無疑問,這個函式庫的功能很強大,但它的學習曲線非常陡峭。 它的程式碼不容易理解,需要非常詳細的學習才能理解。
程式碼範例
產生包含文字、圖像和表格的PDF文檔
using Aspose.Pdf;
using Aspose.Pdf.Text;
using (var document = new Document())
{
// Add page objects
var page = document.Pages.Add();
// Add image - requires Rectangle positioning (You can add tiff images as well)
page.AddImage("logo.png", new Rectangle(20, 730, 120, 830));
// Add text - requires manual positioning
var header = new TextFragment("Company Report");
header.TextState.Font = FontRepository.FindFont("Arial");
header.TextState.FontSize = 24;
header.HorizontalAlignment = HorizontalAlignment.Center;
header.Position = new Position(130, 720);
page.Paragraphs.Add(header);
// Add table - extensive configuration required
var table = new Table
{
ColumnWidths = "100 100 100",
Border = new BorderInfo(BorderSide.Box, 1f, Color.Black),
DefaultCellBorder = new BorderInfo(BorderSide.Box, 0.5f, Color.Gray),
DefaultCellPadding = new MarginInfo(4.5, 4.5, 4.5, 4.5)
};
// Add header row
var headerRow = table.Rows.Add();
headerRow.Cells.Add("Name");
headerRow.Cells.Add("Age");
headerRow.Cells.Add("City");
// Style each header cell individually
foreach (Cell cell in headerRow.Cells)
{
cell.BackgroundColor = Color.LightGray;
cell.DefaultCellTextState.FontSize = 12;
}
// Add data row
var dataRow = table.Rows.Add();
dataRow.Cells.Add("John Doe");
dataRow.Cells.Add("30");
dataRow.Cells.Add("New York");
page.Paragraphs.Add(table);
// Save document
document.Save("Report.pdf");
}using Aspose.Pdf;
using Aspose.Pdf.Text;
using (var document = new Document())
{
// Add page objects
var page = document.Pages.Add();
// Add image - requires Rectangle positioning (You can add tiff images as well)
page.AddImage("logo.png", new Rectangle(20, 730, 120, 830));
// Add text - requires manual positioning
var header = new TextFragment("Company Report");
header.TextState.Font = FontRepository.FindFont("Arial");
header.TextState.FontSize = 24;
header.HorizontalAlignment = HorizontalAlignment.Center;
header.Position = new Position(130, 720);
page.Paragraphs.Add(header);
// Add table - extensive configuration required
var table = new Table
{
ColumnWidths = "100 100 100",
Border = new BorderInfo(BorderSide.Box, 1f, Color.Black),
DefaultCellBorder = new BorderInfo(BorderSide.Box, 0.5f, Color.Gray),
DefaultCellPadding = new MarginInfo(4.5, 4.5, 4.5, 4.5)
};
// Add header row
var headerRow = table.Rows.Add();
headerRow.Cells.Add("Name");
headerRow.Cells.Add("Age");
headerRow.Cells.Add("City");
// Style each header cell individually
foreach (Cell cell in headerRow.Cells)
{
cell.BackgroundColor = Color.LightGray;
cell.DefaultCellTextState.FontSize = 12;
}
// Add data row
var dataRow = table.Rows.Add();
dataRow.Cells.Add("John Doe");
dataRow.Cells.Add("30");
dataRow.Cells.Add("New York");
page.Paragraphs.Add(table);
// Save document
document.Save("Report.pdf");
}IRON VB CONVERTER ERROR developers@ironsoftware.com可以看出,Aspose.PDF 建立新 PDF 文件所需的程式碼非常複雜。 你需要在程式碼中手動設定每一個座標。 您必須手動設定每個 PDF 物件元素的樣式,這非常耗時且效率低下。 但是,它提供了對 PDF 文件的精細控制。
許可證
Aspose.PDF 提供多種授權選項,但大多數都是按需求付費。 該許可證價格起價為 1679 美元。與 IronPDF 許可選項(起價 749 美元)相比,價格非常昂貴。

3. iTextSuite for .NET
iTextSuite (通常稱為 iText7 和 iTextSharp)是 Apryse 提供的 PDF 開發 SDK。 這是一個功能全面的套件,包含了我們在 .NET 應用程式中執行 PDF 操作所需的所有必要工具。 與上述程式庫類似,您可以建立、編輯、編輯、加密 PDF 文件以及對 PDF 文件執行許多其他操作。
iTextSuite 可以很好地處理所有 PDF 的建立和編輯任務,無論是建立簡單的發票,還是涉及財務模組的複雜報表佈局。 它使用起來對系統資源佔用不高,而且可以完美處理大型文件。 它能快速處理文檔,並立即提供輸出結果。
除了這些優點之外,iTextSuite 也存在一些缺點,在考慮使用程式庫之前,您應該了解這些缺點。 據報道,與市場上其他同類產品相比,該庫的價格非常高。 其定價頁面上未提供原始定價。 您需要聯絡客服以取得報價。 它也提供 AGPL 許可,但使用 AGPL 許可的 iTextSuite 時,需要將您的產品開源。與 Aspose 類似,它的學習曲線也比較陡峭,對新手較不友善。 進階 PDF 操作需要對 PDF 和庫結構有深入的了解。
程式碼範例
建立帶有樣式和顏色的 PDF 文件表格
using iText.Kernel.Colors;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;
public void CreateStyledTable(string dest)
{
using var writer = new PdfWriter(dest);
using var pdf = new PdfDocument(writer);
var document = new Document(pdf);
// Create a 2-column table
Table table = new Table(2, false);
// Header cells with gray background
Cell cell11 = new Cell(1, 1)
.SetBackgroundColor(ColorConstants.GRAY)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("State"));
Cell cell12 = new Cell(1, 1)
.SetBackgroundColor(ColorConstants.GRAY)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("Capital"));
// Data cells
Cell cell21 = new Cell(1, 1)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("New York"));
Cell cell22 = new Cell(1, 1)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("Albany"));
Cell cell31 = new Cell(1, 1)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("New Jersey"));
Cell cell32 = new Cell(1, 1)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("Trenton"));
// Add all cells to table
table.AddCell(cell11);
table.AddCell(cell12);
table.AddCell(cell21);
table.AddCell(cell22);
table.AddCell(cell31);
table.AddCell(cell32);
document.Add(table);
document.Close();
}using iText.Kernel.Colors;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;
public void CreateStyledTable(string dest)
{
using var writer = new PdfWriter(dest);
using var pdf = new PdfDocument(writer);
var document = new Document(pdf);
// Create a 2-column table
Table table = new Table(2, false);
// Header cells with gray background
Cell cell11 = new Cell(1, 1)
.SetBackgroundColor(ColorConstants.GRAY)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("State"));
Cell cell12 = new Cell(1, 1)
.SetBackgroundColor(ColorConstants.GRAY)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("Capital"));
// Data cells
Cell cell21 = new Cell(1, 1)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("New York"));
Cell cell22 = new Cell(1, 1)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("Albany"));
Cell cell31 = new Cell(1, 1)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("New Jersey"));
Cell cell32 = new Cell(1, 1)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("Trenton"));
// Add all cells to table
table.AddCell(cell11);
table.AddCell(cell12);
table.AddCell(cell21);
table.AddCell(cell22);
table.AddCell(cell31);
table.AddCell(cell32);
document.Add(table);
document.Close();
}IRON VB CONVERTER ERROR developers@ironsoftware.com從上述範例可以看出iTextSuite程式碼的複雜度。它增加了開發時間和建立大型應用程式的複雜性。
許可證
iTextSuite提供兩種授權模式。 一種是商業許可,另一種是 AGPL 許可。 您可以根據 AGPL 許可證免費在生產環境中使用 iTextSuite,但您也需要將您的產品開源。 關於商業許可,許可頁沒有提及價格。 您需要索取報價,或者您可以聯絡客戶支援。

4. PDFSharp
PDFSharp是一個 C# 開源解決方案,用於解決開發人員在以程式設計方式執行 PDF 操作時遇到的 PDF 問題。 它支援最新的 .NET 框架,包括 .NET Core。 這是一個輕量級的解決方案,涵蓋了開發人員在處理 PDF 方面的所有基本需求。
PDFSharp 可以輕鬆處理大多數常見的 PDF 操作。 您可以建立文件、插入圖像、繪製形狀以及編輯文字字體和大小。 您可以隨意放置任何內容到任何位置,因為 PDFSharp 讓您可以完全控制 PDF。
但是,PDFSharp 也存在一些您應該了解的限制。 它本身不支援 HTML 到 PDF 的轉換,這對開發者來說是一個很大的缺點,因為 HTML 讓在 PDF 中進行樣式設定和定位變得非常容易。 當需要處理多個大檔案時,其效能會受到影響。 您無法執行加密和表單填寫等複雜操作。 而且它缺乏官方支援管道。 使用此程式庫時如果遇到任何問題,您只能依靠社群或您自己的問題解決能力。
程式碼範例
建立包含多種文字樣式的PDF
using PdfSharp.Pdf;
using PdfSharp.Drawing;
// Create document
PdfDocument document = new PdfDocument();
PdfPage page = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);
// Example of different font styles
XFont regularFont = new XFont("Arial", 12, XFontStyleEx.Regular);
XFont boldFont = new XFont("Arial", 12, XFontStyleEx.Bold);
XFont italicFont = new XFont("Arial", 12, XFontStyleEx.Italic);
XFont boldItalicFont = new XFont("Arial", 12, XFontStyleEx.BoldItalic);
// Position for the first text
double y = 50;
double x = 50;
double lineHeight = 20;
// Draw text in different styles - REQUIRES manual positioning
gfx.DrawString("Regular text in Arial", regularFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Bold text in Arial", boldFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Italic text in Arial", italicFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Bold and Italic text in Arial", boldItalicFont, XBrushes.Black, x, y);
// Save document
document.Save("FormattedText.pdf");using PdfSharp.Pdf;
using PdfSharp.Drawing;
// Create document
PdfDocument document = new PdfDocument();
PdfPage page = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);
// Example of different font styles
XFont regularFont = new XFont("Arial", 12, XFontStyleEx.Regular);
XFont boldFont = new XFont("Arial", 12, XFontStyleEx.Bold);
XFont italicFont = new XFont("Arial", 12, XFontStyleEx.Italic);
XFont boldItalicFont = new XFont("Arial", 12, XFontStyleEx.BoldItalic);
// Position for the first text
double y = 50;
double x = 50;
double lineHeight = 20;
// Draw text in different styles - REQUIRES manual positioning
gfx.DrawString("Regular text in Arial", regularFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Bold text in Arial", boldFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Italic text in Arial", italicFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Bold and Italic text in Arial", boldItalicFont, XBrushes.Black, x, y);
// Save document
document.Save("FormattedText.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.com對於需要輕量級、免費且具有精確定位控制的基本 PDF 生成解決方案的開發人員來說,PDFSharp 仍然是一個可靠的選擇。 請做好準備,克服它的局限性,或將其與其他工具結合使用以滿足更高級的需求。
許可證
PDFSharp 採用 MIT 許可證發布,完全免費使用。 你只需要在分發版本中包含原始版權聲明並註明許可協議即可。
5. PDFPig
PDFPig是另一個為 .NET 開發人員建立的開源程式庫,它允許您讀取 PDF 檔案並從中提取內容。 該庫從 PDF 文件中提取單個字母的位置和大小。 它可以檢索圖像、讀取 PDF 註釋和表單、存取超連結並顯示嵌入式文件。 您也可以存取文件元資料並查看 PDF 內部結構。
與類似的 .NET 工具相比,該程式庫在基準測試中表現良好,且記憶體使用效率很高。 它提供了一種無需成本的商業替代方案。 它定期更新,並維護活躍的 GitHub 文件。
圖書館存在一些你應該了解的明顯限制。 它不會將HTML或其他格式轉換為PDF。 它無法從 PDF 頁面產生圖像,不過像 docnet 或 PDFtoImage 這樣的獨立工具可以彌補這一缺陷。 PDF 表單是唯讀的; 您無法修改或新增表單值。 要提取表格數據,您需要使用 Tabula Sharp 或 Camelot Sharp 等外部工具。建立文件時無法新增或編輯超連結。 與 IronPDF 等更全面的庫相比,PDFPig 提供的功能較少,文件也不那麼詳盡。
程式碼範例
基本文字擷取
using System;
using System.Collections.Generic;
using System.Linq;
using UglyToad.PdfPig;
using UglyToad.PdfPig.Content;
public static class Program
{
public static void Main()
{
using (PdfDocument document = PdfDocument.Open(@"C:\path\to\file.pdf"))
{
foreach (Page page in document.GetPages())
{
// Extract all letters
IReadOnlyList<Letter> letters = page.Letters;
string text = string.Join(string.Empty, letters.Select(x => x.Value));
// Extract words
IEnumerable<Word> words = page.GetWords();
// Extract images
IEnumerable<IPdfImage> images = page.GetImages();
}
}
}
}using System;
using System.Collections.Generic;
using System.Linq;
using UglyToad.PdfPig;
using UglyToad.PdfPig.Content;
public static class Program
{
public static void Main()
{
using (PdfDocument document = PdfDocument.Open(@"C:\path\to\file.pdf"))
{
foreach (Page page in document.GetPages())
{
// Extract all letters
IReadOnlyList<Letter> letters = page.Letters;
string text = string.Join(string.Empty, letters.Select(x => x.Value));
// Extract words
IEnumerable<Word> words = page.GetWords();
// Extract images
IEnumerable<IPdfImage> images = page.GetImages();
}
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com許可證
PDFPig 根據 Apache 2.0 授權分發,該授權僅要求您在發行版本中包含原始版權聲明和授權文字。 除了上述要求之外,您可以完全自由地以任何方式使用此程式庫。
結論
總而言之,讓我們來比較一下這些 C# PDF 函式庫的定價和授權模式。
IronPDF提供靈活的定價方案,適合個人和企業用戶。開發用途免費,並提供免費試用。 IronPDF 的定價非常合理,起價僅為 749 美元。憑藉其全面的功能集、出色的支援和可用於生產環境的穩定性,IronPDF 提供了最佳的性價比。
Aspose.PDF採用按需付費模式,授權費用起價為 1,679 美元,比其他替代方案貴得多。 雖然它提供了精細的控制,但陡峭的學習曲線和高昂的成本可能不適合所有預算。
iTextSuite的網站上沒有公開透明的定價資訊。您必須聯繫他們的支援團隊以取得報價,這意味著價格會因具體情況而異。 他們確實提供免費使用的 AGPL 許可證,但這要求你將整個產品開源。
PDFSharp和PDFPig分別採用 MIT 和 Apache 2.0 許可證,完全免費。 但是,與商業產品相比,它們的功能有限。 PDFSharp 缺乏 HTML 轉 PDF 功能,且難以處理大文件,而 PDFPig 主要是一個唯讀函式庫。
選擇合適的PDF庫取決於您的特定需求和預算。 如果您只需要基本功能並且具備技術專長,開源方案是不錯的選擇。 然而,對於功能豐富的應用程序,需要高級功能、可靠的支援和全面的文檔,IronPDF 是最經濟高效且功能最齊全的解決方案。