在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
PDF(可攜式文件格式)是一種被廣泛使用的文件格式,因其能夠保護文件格式、安全性和可攜性而受到歡迎。
PDF 文件成為全球最廣泛使用的文件格式之一,並且有多個可用於在 C# 語言中創建和操作 PDF 的程式庫。
了解如何使用 IronPDF 和 iTextSharp 在 C# 中編輯 PDF 文件透過利用這些強大的程式庫,使任務變得簡單明瞭。
在本文中,我們將比較兩個用於 C# 的熱門 PDF 操作庫:iTextSharp 和 IronPDF。 我們將討論如何使用這兩個庫編輯 PDF 文件,然後探討 IronPDF 如何在輸出打印、性能和定價方面,相較於 iTextSharp 更具優勢。
iTextSharp 和IronPDF 功能和試用資訊可用來幫助開發人員在 C# 中高效地處理 PDF 文件。 這兩個庫提供廣泛的功能和特性來創建、編輯和操作 PDF 文件。
iTextSharp DLL 是 Java 基於 iText 庫的 C# 移植版本。 它提供了一個簡單易用的 API 用於創建和操作 PDF 文件。 iTextSharp 是一個開源庫,使用 AGPL 許可證。
IronPDF 是一個 .NET 庫,旨在使用 C# 創建、編輯和操作 PDF 文件。 它提供了一個現代且直觀的 API 用於處理 PDF 文件。 IronPDF 是一個隨附的商業庫,具有免費試用版和訂閱選項更廣泛的使用。
iTextSharp 和 IronPDF 庫都提供廣泛的功能來創建、編輯和操作 PDF 文件。 然而,IronPDF 相較於 iTextSharp 具有數個優勢,使其成為在 C# 中處理 PDF 文件的首選。
現在我們已經討論了 iTextSharp 和 IronPDF 之間的區別,讓我們來看看如何使用這兩個庫編輯 PDF 文件。 我們將通過使用iTextSharp和IronPDF在現有PDF文件中添加文本、表單字段以及填寫表單的示例。
在我們開始之前,您將需要以下內容:
您的電腦上已安裝 Visual Studio。
C# 程式語言的基本知識。
已在您的專案中安裝 iTextSharp 庫。
要在專案中安裝 iTextSharp 庫,您可以使用 NuGet 套件管理器。 打開你的 Visual Studio 專案,並在方案總管中右鍵點擊專案名稱。 從上下文選單中選擇「管理 NuGet 套件」。 在 NuGet 套件管理員中,搜尋「iTextSharp」並安裝該套件的最新版本。
要使用iTextSharp創建新的PDF文件,我們需要創建一個新的 "Document" 類的實例,並將一個新的 FileStream
對象傳遞給其構造函數。 這是個例子:
Paragraph header = new Paragraph("HEADER")
.SetTextAlignment(TextAlignment.CENTER)
.SetFontSize(16);
document.Add(header);
for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
{
Rectangle pageSize = pdf.GetPage(i).GetPageSize();
float x = pageSize.GetWidth() / 2;
float y = pageSize.GetTop() - 20;
document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
}
document.SetTopMargin(50);
document.SetBottomMargin(50);
Paragraph header = new Paragraph("HEADER")
.SetTextAlignment(TextAlignment.CENTER)
.SetFontSize(16);
document.Add(header);
for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
{
Rectangle pageSize = pdf.GetPage(i).GetPageSize();
float x = pageSize.GetWidth() / 2;
float y = pageSize.GetTop() - 20;
document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
}
document.SetTopMargin(50);
document.SetBottomMargin(50);
Dim header As Paragraph = (New Paragraph("HEADER")).SetTextAlignment(TextAlignment.CENTER).SetFontSize(16)
document.Add(header)
Dim i As Integer = 1
Do While i <= pdf.GetNumberOfPages()
Dim pageSize As Rectangle = pdf.GetPage(i).GetPageSize()
'INSTANT VB WARNING: Instant VB cannot determine whether both operands of this division are integer types - if they are then you should use the VB integer division operator:
Dim x As Single = pageSize.GetWidth() / 2
Dim y As Single = pageSize.GetTop() - 20
document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0)
i += 1
Loop
document.SetTopMargin(50)
document.SetBottomMargin(50)
在上面的代碼中,我們創建了一個名為 "newfile.pdf" 的新PDF檔案,並添加了一個新的段落。
要使用 iTextSharp 編輯現有的 PDF 文件,我們需要創建一個 PdfReader
對象來讀取現有的 PDF 文檔,並創建一個 PdfStamper
對象來修改它。 這是個例子:
/**
iText URL to PDF
anchor-itext-url-to-pdf
**/
private void ExistingWebURL()
{
//Initialize PDF writer
PdfWriter writer = new PdfWriter("wikipedia.pdf");
//Initialize PDF document
using PdfDocument pdf = new PdfDocument(writer);
ConverterProperties properties = new ConverterProperties();
properties.SetBaseUri("https://en.wikipedia.org/wiki/Portable_Document_Format");
Document document = HtmlConverter.ConvertToDocument(new FileStream("Test_iText7_1.pdf", FileMode.Open), pdf, properties);
Paragraph header = new Paragraph("HEADER")
.SetTextAlignment(TextAlignment.CENTER)
.SetFontSize(16);
document.Add(header);
for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
{
Rectangle pageSize = pdf.GetPage(i).GetPageSize();
float x = pageSize.GetWidth() / 2;
float y = pageSize.GetTop() - 20;
document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
}
document.SetTopMargin(50);
document.SetBottomMargin(50);
document.Close();
}
/**
iText URL to PDF
anchor-itext-url-to-pdf
**/
private void ExistingWebURL()
{
//Initialize PDF writer
PdfWriter writer = new PdfWriter("wikipedia.pdf");
//Initialize PDF document
using PdfDocument pdf = new PdfDocument(writer);
ConverterProperties properties = new ConverterProperties();
properties.SetBaseUri("https://en.wikipedia.org/wiki/Portable_Document_Format");
Document document = HtmlConverter.ConvertToDocument(new FileStream("Test_iText7_1.pdf", FileMode.Open), pdf, properties);
Paragraph header = new Paragraph("HEADER")
.SetTextAlignment(TextAlignment.CENTER)
.SetFontSize(16);
document.Add(header);
for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
{
Rectangle pageSize = pdf.GetPage(i).GetPageSize();
float x = pageSize.GetWidth() / 2;
float y = pageSize.GetTop() - 20;
document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
}
document.SetTopMargin(50);
document.SetBottomMargin(50);
document.Close();
}
'''
'''iText URL to PDF
'''anchor-itext-url-to-pdf
'''*
Private Sub ExistingWebURL()
'Initialize PDF writer
Dim writer As New PdfWriter("wikipedia.pdf")
'Initialize PDF document
Using pdf As New PdfDocument(writer)
Dim properties As New ConverterProperties()
properties.SetBaseUri("https://en.wikipedia.org/wiki/Portable_Document_Format")
Dim document As Document = HtmlConverter.ConvertToDocument(New FileStream("Test_iText7_1.pdf", FileMode.Open), pdf, properties)
Dim header As Paragraph = (New Paragraph("HEADER")).SetTextAlignment(TextAlignment.CENTER).SetFontSize(16)
document.Add(header)
Dim i As Integer = 1
Do While i <= pdf.GetNumberOfPages()
Dim pageSize As Rectangle = pdf.GetPage(i).GetPageSize()
'INSTANT VB WARNING: Instant VB cannot determine whether both operands of this division are integer types - if they are then you should use the VB integer division operator:
Dim x As Single = pageSize.GetWidth() / 2
Dim y As Single = pageSize.GetTop() - 20
document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0)
i += 1
Loop
document.SetTopMargin(50)
document.SetBottomMargin(50)
document.Close()
End Using
End Sub
在上述代碼中,我們打開了一個名為 "existingfile.pdf" 的現有 PDF 文件,並創建了一個名為 "editedfile.pdf" 的新 PDF 文件。 我們用數據填寫了表單欄位,並向 PDF 文件中新增了一個新頁面。
PdfStamper
類提供更多選項來編輯現有的 PDF 文件,例如添加圖像、創建註釋和更改頁面大小。
IronPDF 是一個強大的 C# PDF 函式庫,可以編輯 PDF 文件。 在本教程中,我們將逐步演示如何使用IronPDF編輯現有的PDF文件。 我們將涵蓋各種方面,包括創建新的 PDF 文件、向現有 PDF 添加頁面、向 PDF 添加內容以及填寫 PDF 表單欄位。 以下是C#範例程式碼,說明各個步驟。
在我們開始之前,請確保您已安裝以下內容:
在 Visual Studio 中創建一個新的 C# 專案。 選擇「控制台應用程式」項目類型。
通過 NuGet 套件管理器將 IronPDF 庫安裝到您的項目中。
Install-Package IronPdf
要載入現有的 PDF 文件,可以使用 PdfDocument
類別。 以下是載入現有 PDF 文件的程式碼範例:
using IronPdf;
var existingPdf = @"C:\path\to\existing\pdf\document.pdf";
var pdfDoc = PdfDocument.FromFile(existingPdf);
using IronPdf;
var existingPdf = @"C:\path\to\existing\pdf\document.pdf";
var pdfDoc = PdfDocument.FromFile(existingPdf);
Imports IronPdf
Private existingPdf = "C:\path\to\existing\pdf\document.pdf"
Private pdfDoc = PdfDocument.FromFile(existingPdf)
要向現有文件新增頁面,可以使用 PdfDocument
類別的 AddPage
方法。 以下是一個將新頁面添加到現有 PDF 的範例:
var newPage = pdfDoc.AddPage();
newPage.Size = PageSize.Letter;
var newPage = pdfDoc.AddPage();
newPage.Size = PageSize.Letter;
Dim newPage = pdfDoc.AddPage()
newPage.Size = PageSize.Letter
透過使用 IronPDF,以下程式碼可以直接從網頁地址生成 PDF 檔案。 另外,還提供自訂的頁首和頁尾。
/**
IronPDF URL to PDF
anchor-ironpdf-website-to-pdf
**/
private void ExistingWebURL()
{
// Create a PDF from any existing web page
var Renderer = new IronPdf.ChromePdfRenderer();
// Create a PDF from an existing HTML
Renderer.RenderingOptions.MarginTop = 50; //millimetres
Renderer.RenderingOptions.MarginBottom = 50;
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
};
Renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
};
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
Renderer.RenderingOptions.EnableJavaScript = true;
Renderer.RenderingOptions.RenderDelay = 500; //milliseconds
using var PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format");
PDF.SaveAs("wikipedia.pdf");
}
/**
IronPDF URL to PDF
anchor-ironpdf-website-to-pdf
**/
private void ExistingWebURL()
{
// Create a PDF from any existing web page
var Renderer = new IronPdf.ChromePdfRenderer();
// Create a PDF from an existing HTML
Renderer.RenderingOptions.MarginTop = 50; //millimetres
Renderer.RenderingOptions.MarginBottom = 50;
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
};
Renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
};
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
Renderer.RenderingOptions.EnableJavaScript = true;
Renderer.RenderingOptions.RenderDelay = 500; //milliseconds
using var PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format");
PDF.SaveAs("wikipedia.pdf");
}
'''
'''IronPDF URL to PDF
'''anchor-ironpdf-website-to-pdf
'''*
Private Sub ExistingWebURL()
' Create a PDF from any existing web page
Dim Renderer = New IronPdf.ChromePdfRenderer()
' Create a PDF from an existing HTML
Renderer.RenderingOptions.MarginTop = 50 'millimetres
Renderer.RenderingOptions.MarginBottom = 50
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
Renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
.CenterText = "{pdf-title}",
.DrawDividerLine = True,
.FontSize = 16
}
Renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
.LeftText = "{date} {time}",
.RightText = "Page {page} of {total-pages}",
.DrawDividerLine = True,
.FontSize = 14
}
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
Renderer.RenderingOptions.EnableJavaScript = True
Renderer.RenderingOptions.RenderDelay = 500 'milliseconds
Dim PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format")
PDF.SaveAs("wikipedia.pdf")
End Sub
iTextSharp 是一個受歡迎的開源庫,可讓開發人員在 C# 中創建、操作和提取 PDF 文檔中的數據。 這是一個有良好文檔並被廣泛使用的庫,已存在很長時間。然而,IronPDF 是一個較新且更現代化的庫,提供了更多的功能和優勢,使其成為開發者的更佳選擇。
IronPDF 超越 iTextSharp 的一個領域是其輸出功能。 IronPDF提供卓越的HTML轉PDF轉換支援,使開發人員能夠輕鬆地將HTML頁面轉換為PDF文件。 這對於生成包含豐富媒體或互動內容的報告或文件特別有利。 此外,IronPDF 允許更精細地控制頁面佈局和格式,使創建完全符合預期外觀的 PDF 文件更為簡單。
以下程式碼使用 IronPDF 來建立具有 HTML 輸入的 PDF。
/**
IronPDF HTML to PDF
anchor-ironpdf-document-from-html
**/
private void HTMLString()
{
// Render any HTML fragment or document to HTML
var Renderer = new IronPdf.ChromePdfRenderer();
using var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");
Renderer.RenderingOptions.TextFooter = new HtmlHeaderFooter()
{
HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"
};
var OutputPath = "ChromePdfRenderer.pdf";
PDF.SaveAs(OutputPath);
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen;
}
/**
IronPDF HTML to PDF
anchor-ironpdf-document-from-html
**/
private void HTMLString()
{
// Render any HTML fragment or document to HTML
var Renderer = new IronPdf.ChromePdfRenderer();
using var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");
Renderer.RenderingOptions.TextFooter = new HtmlHeaderFooter()
{
HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"
};
var OutputPath = "ChromePdfRenderer.pdf";
PDF.SaveAs(OutputPath);
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen;
}
'''
'''IronPDF HTML to PDF
'''anchor-ironpdf-document-from-html
'''*
Private Sub HTMLString()
' Render any HTML fragment or document to HTML
Dim Renderer = New IronPdf.ChromePdfRenderer()
Dim PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>")
Renderer.RenderingOptions.TextFooter = New HtmlHeaderFooter() With {.HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"}
Dim OutputPath = "ChromePdfRenderer.pdf"
PDF.SaveAs(OutputPath)
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen
End Sub
以下代碼使用iText7通過HTML文本生成PDF。
/**
iText HTML to PDF
anchor-itext-html-to-pdf
**/
private void HTMLString()
{
HtmlConverter.ConvertToPdf("< h1 > Hello iText7 </ h1 >", new FileStream("ChromePdfRenderer.pdf", FileMode.Create));
}
/**
iText HTML to PDF
anchor-itext-html-to-pdf
**/
private void HTMLString()
{
HtmlConverter.ConvertToPdf("< h1 > Hello iText7 </ h1 >", new FileStream("ChromePdfRenderer.pdf", FileMode.Create));
}
'''
'''iText HTML to PDF
'''anchor-itext-html-to-pdf
'''*
Private Sub HTMLString()
HtmlConverter.ConvertToPdf("< h1 > Hello iText7 </ h1 >", New FileStream("ChromePdfRenderer.pdf", FileMode.Create))
End Sub
在性能方面,IronPDF 也是顯然的贏家。 它被設計得比 iTextSharp 更快、更高效,使開發人員能夠更快速地生成 PDF 並消耗更少的系統資源。 這在處理大型或複雜的 PDF 文件時尤其重要,因為性能可能成為一個重要因素。
IronPDF 相較於 iTextSharp 的另一個優勢是定價。 雖然 iTextSharp 大部分用途是免費的,但在某些使用情況下需要商業授權,而且商業授權可能相當昂貴。另一方面,IronPDF 提供了一種更經濟實惠的定價模式,提供多種選擇以滿足不同需求和預算。
iTextSharp 和 IronPDF 之間的主要區別之一是它們的授權和定價。
iTextSharp 採用 AGPL 授權,該授權允許開源項目免費使用,但商業用途需要商業許可。 iTextSharp 的商業授權有不同等級,價格取決於所需的功能和支持級別,以及開發者和部署伺服器的數量。
另一方面,IronPDF 是一個商業庫,提供免費試用版以供開發人員在購買前評估。 IronPDF 提供靈活的授權選項,包括每開發者及每伺服器授權,以及適用於大型組織的企業授權。 IronPDF 的定價根據所需的開發者數量和功能而定,並且提供多年期和批量授權的折扣。
雖然 iTextSharp 對於小型開源專案可能更具成本效益,但 IronPDF 的靈活授權選項和商業支持使其成為商業專案和大型組織的更可行選擇。
總結來說,儘管 iTextSharp 和 IronPDF 都是能夠用於 C# PDF 操作的強大庫,但 IronPDF 脫穎而出,成為更具多樣性和效率的選擇。憑藉其先進的功能、直觀的 API 和易於使用的文檔,IronPDF 為開發人員提供了卓越的體驗。 其靈活的授權選項及划算的定價使其更適合商業項目和大型組織。
此外,IronPDF 擁有更好的技術性能,具有更快的渲染速度、高效的記憶體使用率,以及優化的大型 PDF 文件處理能力。 Iron Software 的IronPDF 授權的特殊定價選項購買多個產品和許可證,開發人員可以獲得一整套強大的工具和庫,從而簡化他們的應用程式開發流程。 如果您需要一個強大且高效的 PDF 庫來支持您的 C# 專案,IronPDF 是一個不錯的選擇。