iTextSharp:在 PDF 中新增圖像
IronPDF 提供更簡單的圖像添加功能,程式碼行數更少,並且提供永久許可證;而 iTextSharp 提供更精細的控制,但需要更多程式碼,並且商業用途的許可協議為 AGPL,許可較為複雜。
在 .NET 環境下處理 PDF 文件時,向文件中添加圖像是許多應用程式的常見需求。 無論您是產生帶有公司徽標的發票、創建帶有嵌入式圖表的報告,還是製作帶有浮水印的自訂文檔,將圖像嵌入 PDF 的功能都至關重要。 C# 中兩個流行的 PDF 庫是IronPDF和iTextSharp 。 本文從易用性、性能、許可模式以及圖像壓縮和格式支援等高級功能等方面,對這兩個庫在向 PDF 添加圖像方面的能力進行了比較。
IronPDF 和 iTextSharp 的主要差異是什麼?
每個圖庫提供哪些圖像功能?
IronPDF: IronPDF 簡化了在 PDF 中新增影像的操作,內建支援來自 URL 的本機和遠端影像。 其 API 提供對位置、寬度和縮放的控制。 該程式庫支援 JPEG、PNG、GIF、 SVG和WebGL 內容。 印章功能提供了添加浮水印、信頭和疊加圖像的方法。 Chrome渲染引擎可確保複雜圖形和響應式影像的精確渲染。
iTextSharp: iTextSharp 透過其底層 API 提供影像嵌入功能。 它提供了一個靈活的接口,可以處理 JPG 和 PNG 格式。 但是,自訂需要更多程式碼,尤其是在精確定位影像或實現透明度和旋轉時。 該庫需要手動處理座標系和比例計算。 為了實現響應式尺寸,您通常需要實作自己的視口控制。
它們如何處理大型文件和複雜操作?
商業用途的成本影響是什麼?
如何使用 IronPDF 為 PDF 新增圖片?
如何安裝和配置 IronPDF?
透過NuGet將 IronPDF 安裝到您的 C# 或 Visual Basic 專案中。 該程式庫支援多種安裝方法,包括Windows Installer和Docker 部署:
Install-Package IronPdf
安裝完成後,您可以使用 IronPDF 的API 參考開始新增影像。 此程式庫可在Windows 、 Linux和macOS平台上無縫運作。
IronPDF 中的基本影像新增功能是什麼樣的呢?
快速入門:使用 IronPDF 為 PDF 新增圖像
使用 IronPDF 的印章 API 為 PDF 添加圖像只需要編寫極少的程式碼。
立即開始使用 NuGet 建立 PDF 檔案:
使用 NuGet 套件管理器安裝 IronPDF
複製並運行這段程式碼。
using IronPdf; using IronPdf.Editing; class Program { public static void Main(string[] args) { // Create a renderer to convert HTML to PDF ChromePdfRenderer renderer = new ChromePdfRenderer(); // Render a basic PDF with some HTML content PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>"); // Create an ImageStamper with the image URL ImageStamper stamper = new ImageStamper(new Uri("___PROTECTED_URL_61___")); // Configure image position and size stamper.HorizontalAlignment = HorizontalAlignment.Center; stamper.VerticalAlignment = VerticalAlignment.Middle; stamper.Width = 200; // Width in pixels stamper.Height = 100; // Height in pixels // Apply the stamp (image) to the PDF document pdf.ApplyStamp(stamper); // Save the modified PDF to a file pdf.SaveAs("output.pdf"); } }部署到您的生產環境進行測試
如何添加浮水印和背景圖片?
IronPDF 擅長為現有 PDF 新增浮水印和背景影像。 該庫支援多種沖壓操作和自訂定位:
using IronPdf;
using IronPdf.Editing;
// Load an existing PDF
PdfDocument pdf = PdfDocument.FromFile("invoice.pdf");
// Create a watermark with transparency
ImageStamper watermark = new ImageStamper("watermark.png")
{
Opacity = 30, // 30% opacity for subtle watermarking
Rotation = -45, // Diagonal watermark
HorizontalAlignment = HorizontalAlignment.Center,
VerticalAlignment = VerticalAlignment.Middle
};
// Apply watermark to all pages
pdf.ApplyStamp(watermark);
// Add a header logo
ImageStamper logo = new ImageStamper("company-logo.png")
{
HorizontalOffset = Length.Millimeters(10),
VerticalOffset = Length.Millimeters(10),
Width = 150,
Height = 50
};
pdf.ApplyStamp(logo, PageSelection.FirstPage);
pdf.SaveAs("watermarked-invoice.pdf");using IronPdf;
using IronPdf.Editing;
// Load an existing PDF
PdfDocument pdf = PdfDocument.FromFile("invoice.pdf");
// Create a watermark with transparency
ImageStamper watermark = new ImageStamper("watermark.png")
{
Opacity = 30, // 30% opacity for subtle watermarking
Rotation = -45, // Diagonal watermark
HorizontalAlignment = HorizontalAlignment.Center,
VerticalAlignment = VerticalAlignment.Middle
};
// Apply watermark to all pages
pdf.ApplyStamp(watermark);
// Add a header logo
ImageStamper logo = new ImageStamper("company-logo.png")
{
HorizontalOffset = Length.Millimeters(10),
VerticalOffset = Length.Millimeters(10),
Width = 150,
Height = 50
};
pdf.ApplyStamp(logo, PageSelection.FirstPage);
pdf.SaveAs("watermarked-invoice.pdf");您也可以建立包含多張圖片的複雜版面:
// Add images from Base64 strings
string base64Image = Convert.ToBase64String(File.ReadAllBytes("signature.png"));
HtmlStamper signatureStamp = new HtmlStamper($"<img src='data:image/png;base64,{base64Image}'/>");
signatureStamp.HorizontalAlignment = HorizontalAlignment.Right;
signatureStamp.VerticalAlignment = VerticalAlignment.Bottom;
pdf.ApplyStamp(signatureStamp);// Add images from Base64 strings
string base64Image = Convert.ToBase64String(File.ReadAllBytes("signature.png"));
HtmlStamper signatureStamp = new HtmlStamper($"<img src='data:image/png;base64,{base64Image}'/>");
signatureStamp.HorizontalAlignment = HorizontalAlignment.Right;
signatureStamp.VerticalAlignment = VerticalAlignment.Bottom;
pdf.ApplyStamp(signatureStamp);PDF 檢視器顯示一個簡單的文檔,其中包含"Hello World"文字和位於頁面中心的 IronPDF 標誌浮水印——演示了 IronPDF 的圖像浮水印功能,該功能可精確定位並控制不透明度。
本範例使用ChromePdfRenderer類別從HTML 字串渲染新的 PDF。 使用 IronPDF 的圖像蓋章工具,您可以從提供的 URL 建立圖像並將其套用到 PDF 中。 這示範如何用最少的程式碼向PDF 頁面新增圖像。 渲染選項可讓您完全控制輸出品質。
如何在IronPDF中控制影像位置和尺寸?
IronPDF 為影像放置提供了廣泛的自訂選項。 您可以透過印章工具的定位功能設定對齊方式和偏移量來指定頁面位置。 該庫支援使用座標進行絕對定位和使用對齊選項進行相對定位。 高級功能包括自訂紙張尺寸和邊距控制,以實現精確的佈局。
如何使用 iTextSharp 為 PDF 新增圖片?
如何安裝和配置 iTextSharp?
透過 NuGet 安裝 iTextSharp。 與 IronPDF 的全面平台支援不同,iTextSharp 的部署選項有限:
Install-Package itext7
配置完成後,即可使用 iTextSharp 的文件操作功能新增影像。 該庫需要額外的配置才能實現字體管理和UTF-8 支援。
iTextSharp 中的基本圖片新增功能是什麼樣的?
以下是如何使用 iTextSharp 插入圖片:
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.IO.Image;
class Program
{
public static void Main(string[] args)
{
// Initialize PDF writer
var pdfWriter = new PdfWriter("output.pdf");
// Initialize PDF document
var pdfDocument = new iText.Kernel.Pdf.PdfDocument(pdfWriter);
// Initialize document
var document = new Document(pdfDocument);
// Create ImageData from image file
ImageData imageData = ImageDataFactory.Create("iText.png");
// Create an Image instance
Image image = new Image(imageData);
// Set fixed position for the image in the PDF
image.SetFixedPosition(50, 100); // x, y coordinates
// Scale image to fit within specified dimensions
image.ScaleToFit(200, 200); // Width, Height
// Add image to document
document.Add(image);
// Close the document
document.Close();
}
}using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.IO.Image;
class Program
{
public static void Main(string[] args)
{
// Initialize PDF writer
var pdfWriter = new PdfWriter("output.pdf");
// Initialize PDF document
var pdfDocument = new iText.Kernel.Pdf.PdfDocument(pdfWriter);
// Initialize document
var document = new Document(pdfDocument);
// Create ImageData from image file
ImageData imageData = ImageDataFactory.Create("iText.png");
// Create an Image instance
Image image = new Image(imageData);
// Set fixed position for the image in the PDF
image.SetFixedPosition(50, 100); // x, y coordinates
// Scale image to fit within specified dimensions
image.ScaleToFit(200, 200); // Width, Height
// Add image to document
document.Add(image);
// Close the document
document.Close();
}
}如何添加多張圖片並處理複雜的佈局?
對於建立產品目錄或相簿等複雜場景,您需要手動管理佈局。 IronPDF的目錄功能和書籤支援可以整理多頁文件:
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.IO.Image;
using iText.Layout.Properties;
// Create a grid of images
var pdfWriter = new PdfWriter("catalog.pdf");
var pdfDocument = new PdfDocument(pdfWriter);
var document = new Document(pdfDocument);
// Add images in a grid layout
float xPosition = 50;
float yPosition = 750;
int imagesPerRow = 3;
int currentImage = 0;
string[] imageFiles = { "product1.jpg", "product2.jpg", "product3.jpg",
"product4.jpg", "product5.jpg", "product6.jpg" };
foreach (string imagePath in imageFiles)
{
ImageData imageData = ImageDataFactory.Create(imagePath);
Image image = new Image(imageData);
// Calculate position
int column = currentImage % imagesPerRow;
int row = currentImage / imagesPerRow;
float x = xPosition + (column * 180);
float y = yPosition - (row * 250);
image.SetFixedPosition(x, y);
image.ScaleToFit(150, 200);
document.Add(image);
currentImage++;
}
document.Close();using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.IO.Image;
using iText.Layout.Properties;
// Create a grid of images
var pdfWriter = new PdfWriter("catalog.pdf");
var pdfDocument = new PdfDocument(pdfWriter);
var document = new Document(pdfDocument);
// Add images in a grid layout
float xPosition = 50;
float yPosition = 750;
int imagesPerRow = 3;
int currentImage = 0;
string[] imageFiles = { "product1.jpg", "product2.jpg", "product3.jpg",
"product4.jpg", "product5.jpg", "product6.jpg" };
foreach (string imagePath in imageFiles)
{
ImageData imageData = ImageDataFactory.Create(imagePath);
Image image = new Image(imageData);
// Calculate position
int column = currentImage % imagesPerRow;
int row = currentImage / imagesPerRow;
float x = xPosition + (column * 180);
float y = yPosition - (row * 250);
image.SetFixedPosition(x, y);
image.ScaleToFit(150, 200);
document.Add(image);
currentImage++;
}
document.Close();PDF 檢視器顯示一個居中的 ITEXT 徽標,在徽標下方是"CORE"字樣,頁面其餘部分為空白——這是 iTextSharp 圖像插入功能的範例輸出,演示了其基本的定位和縮放功能。
圖片被加入到座標 (50, 100) 處,並縮放至 200x200 像素大小。 PdfWriter建立輸出文件,使PDF 寫入器能夠處理映像。 為了更好地組織內容,可以考慮使用頁碼和頁首/頁尾。
如何在iTextSharp中控制影像位置和尺寸?
iTextSharp 透過手動座標計算提供對位置和大小的控制。 您可以縮放影像,同時保持寬高比,或拉伸到特定尺寸。 SetFixedPosition方法提供精確的放置控制,您可以調整對齊方式和旋轉角度。 但是,它缺少 IronPDF 的視口控制和響應式尺寸選項。
IronPDF 和 iTextSharp 的效能比較如何?
這兩個庫在處理向 PDF 添加圖像方面存在顯著差異:
有哪些進階影像功能可用?
它們如何處理不同的影像格式?
IronPDF支援所有影像格式:
- JPEG/JPG品質優化 -支援透明度的 PNG GIF(靜態和動態幀)
- SVG 向量圖形
- TIFF 文件,包括多頁 TIFF 文件
- WebP 用於現代網頁影像
- Base64編碼影像 來自 Azure Blob 儲存體的映像
iTextSharp支援標準格式:
- JPEG/JPG
- 帶有透明通道的PNG影像
- GIF(僅第一幀)
- TIFF(單頁)
- BMP 和其他點陣圖格式
影像品質和壓縮情況如何?
IronPDF提供內建的壓縮選項,可在檔案大小和品質之間取得平衡。 該庫提供資料清理功能和資料扁平化功能:
// Configure compression when rendering
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.JpegQuality = 85; // 0-100 quality scale
// Compress existing PDFs with images
PdfDocument pdf = PdfDocument.FromFile("large-images.pdf");
pdf.CompressImages(60); // Compress to 60% quality
pdf.SaveAs("compressed.pdf");
// Additional optimization options
renderer.RenderingOptions.GrayScale = true; // Convert to grayscale
renderer.RenderingOptions.DPI = 150; // Reduce DPI for web viewing// Configure compression when rendering
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.JpegQuality = 85; // 0-100 quality scale
// Compress existing PDFs with images
PdfDocument pdf = PdfDocument.FromFile("large-images.pdf");
pdf.CompressImages(60); // Compress to 60% quality
pdf.SaveAs("compressed.pdf");
// Additional optimization options
renderer.RenderingOptions.GrayScale = true; // Convert to grayscale
renderer.RenderingOptions.DPI = 150; // Reduce DPI for web viewingiTextSharp需要透過影像資料處理進行手動壓縮處理,這增加了品質控制的實現複雜性。 您必須自行實現灰階轉換和DPI調整。
如何從現有PDF文件中提取影像?
IronPDF 提供可靠的影像擷取功能:
// Extract all images from a PDF
PdfDocument pdf = PdfDocument.FromFile("document.pdf");
var images = pdf.ExtractAllImages();
foreach (var image in images)
{
// Save extracted images
image.SaveAs($"extracted_image_{images.IndexOf(image)}.png");
}
// Extract images from specific pages
var pageImages = pdf.ExtractImagesFromPage(0); // First page// Extract all images from a PDF
PdfDocument pdf = PdfDocument.FromFile("document.pdf");
var images = pdf.ExtractAllImages();
foreach (var image in images)
{
// Save extracted images
image.SaveAs($"extracted_image_{images.IndexOf(image)}.png");
}
// Extract images from specific pages
var pageImages = pdf.ExtractImagesFromPage(0); // First page授權和定價模式有哪些?
我應該選擇哪個庫來為PDF添加圖像?
! IronPDF 和 iTextSharp PDF 庫的功能對比表,展示了 IronPDF 在易用性、性能、許可靈活性、完整的圖像格式支援以及企業級 PDF 生成高級定位功能方面的優勢
IronPDF和 iTextSharp 都提供了在 C# 中在 PDF 中添加影像的有效工具,各有其獨特的優勢。 IronPDF 以易用性、效能和許可靈活性著稱,是處理複雜 PDF 和影像的理想選擇,且程式碼量極少。 它為大型 PDF 文件提供了更好的可擴展性,並提供一次性購買許可,避免了重複性成本或複雜的開源限制。
該程式庫支援SVG和 WebP 等現代格式,並具有內建壓縮功能和直覺的定位 API,適合需要高品質文件產生的企業應用程式。 IronPDF 的Chrome 渲染引擎可確保在所有平台上實現像素級完美輸出。
iTextSharp 適合開源項目,但需要編寫更多程式碼才能獲得相同的結果,並且處理較大的 PDF 檔案時可能會遇到效能問題。 其底層 API 提供精細的控制,但增加了開發複雜性。 該函式庫缺少響應式 CSS 支援和JavaScript 渲染等現代功能。
對於企業應用而言,IronPDF 的優點包括Docker 支援、 AWS Lambda 相容性和Azure Functions 整合。 該圖書館還提供符合法規要求的PDF/A 合規性和PDF/UA 可近性。
想要簡化您的 PDF 圖片處理流程嗎? IronPDF 可以用最少的程式碼有效率地將圖片加入 PDF 中。 試試IronPDF ,體驗在 C# 專案中簡化影像整合。 此實作方案為您處理了複雜性,節省了時間並改善了您的PDF 生成工作流程。 探索完整的功能集,加入數千名簡化 PDF 操作的開發者行列。
常見問題解答
如何在.NET應用程式中為PDF新增圖像?
您可以使用 IronPDF 的ImageStamper功能將影像新增至 PDF 中,該功能可輕鬆嵌入影像,並精確控製影像的位置和縮放。
使用 IronPDF 處理大型 PDF 檔案有哪些效能優勢?
IronPDF 針對高效能進行了最佳化,尤其適用於大型 PDF 檔案和高解析度影像,使其成為需要高效處理的伺服器應用程式的理想選擇。
IronPDF 如何簡化將影像嵌入 PDF 的流程?
IronPDF 透過提供直覺的 API 簡化了影像嵌入,只需編寫極少的程式碼即可在 PDF 文件中放置和縮放影像,從而提高開發人員的效率。
IronPDF 的授權模式與 iTextSharp 有何不同?
IronPDF 提供一次性購買的永久許可證,免除持續訂閱費用,而 iTextSharp 使用 AGPL 許可證進行開源使用,並為專有項目提供商業選項。
能否提供一個使用 IronPDF 將影像加入 PDF 的程式碼範例?
當然可以!您可以使用 IronPDF 的PdfDocument和ImageStamper類,只需幾行程式碼即可將影像嵌入到 PDF 中,如文章中的範例所示。
IronPDF 和 iTextSharp 的影像放置自訂功能有何不同?
IronPDF 提供簡單的影像放置自訂功能,包括對齊和偏移設置,而 iTextSharp 則提供對影像定位的詳細控制,例如使用SetFixedPosition方法。
在IronPDF和iTextSharp之間進行選擇時,需要考慮哪些關鍵因素?
在 IronPDF 和 iTextSharp 之間進行選擇取決於易用性、處理大型檔案的效能以及許可需求等因素。 IronPDF 因其用戶友好性和可擴展性而備受青睞,而 iTextSharp 則更適合開源專案。
為什麼推薦將 IronPDF 用於高效能伺服器應用程式?
IronPDF 的架構旨在實現高效能,能夠高效處理大型文件和影像,因此對於需要速度和可靠性的伺服器應用程式來說,這是一個絕佳的選擇。
在PDF中加入圖片時,常見的故障排除步驟有哪些?
在排查 PDF 中的圖像嵌入問題時,請確保圖像路徑正確,檢查文件存取權限,並驗證所使用的 PDF 庫是否支援圖像格式。
IronPDF試用版如何幫助開發者?
IronPDF 的試用版可讓開發人員探索其功能並測試其處理 PDF 影像嵌入的能力,從而簡化 C# 專案中的 PDF 處理。






