如何在 PDF 上繪製文字和位圖 C#

如何使用 C# 在 PDF 上繪製文字與位圖</#35;

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF 使您能夠使用 DrawTextDrawBitmap 方法在現有的 PDF 上繪製文字和圖像,允許使用水印、標誌、註釋進行自訂,並在不改變原始內容的情況下改善視覺外觀。

在 PDF 上繪製文字和影像涉及將內容新增至現有文件。 IronPDF 可以無縫啟用此功能。 透過加入文字和圖像,您可以自訂 PDF 的 水印、標誌和 註解,改善文件的視覺外觀和品牌形象。 此外,文字和圖片也有助於資訊呈現、資料可視化和互動表單的建立。

快速入門:使用 IronPDF 為 PDF 添加文字和圖像

開始用文字和圖像快速有效地增強您的 PDF 文件。 使用 DrawTextDrawBitmap 方法,您可以透過新增水印、標誌或註解來輕鬆自訂 PDF。 本範例示範如何在特定座標上繪製文字,並將圖片無縫插入 PDF。

Nuget Icon立即開始使用 NuGet 建立 PDF 檔案:

  1. 使用 NuGet 套件管理器安裝 IronPDF

    PM > Install-Package IronPdf

  2. 複製並運行這段程式碼。

    new ChromePdfRenderer()
        .RenderHtmlAsPdf("<h1>Doc</h1>")
        .DrawText("Hello World", FontTypes.TimesNewRoman.Name, 12, 0, 100, 100, Color.Black, 0)
        .DrawBitmap(AnyBitmap.FromFile("logo.png"), 0, 50, 250, 500, 300)
        .SaveAs("annotated.pdf");
  3. 部署到您的生產環境進行測試

    立即開始在您的專案中使用 IronPDF,免費試用!
    arrow pointer


如何在 PDF 上繪製文字?

PdfDocument 物件上可用的 DrawText 方法可讓您在不改變其原始內容的情況下,將文字新增至現有的 PDF。 此方法對於在 PDF 中加入動態內容特別有用,類似於 印章文字與圖像功能,可做更複雜的覆蓋。

了解座標系統

繪製文字之前,請先瞭解 PDF 坐標系統。 原點 (0,0) 位於頁面左下角,X 值向右增加,Y 值向上增加。 這與許多圖形系統的原點在左上方不同。

:path=/static-assets/pdf/content-code-examples/how-to/draw-text-and-bitmap-draw-text.cs
using IronPdf;
using IronSoftware.Drawing;

ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>testing</h1>");

// Draw text on PDF
pdf.DrawText("Some text", FontTypes.TimesNewRoman.Name, FontSize: 12, PageIndex: 0, X: 100, Y: 100, Color.Black, Rotation: 0);

pdf.SaveAs("drawText.pdf");
$vbLabelText   $csharpLabel

我可以使用哪些字型?

DrawText 方法目前支援 IronPDF 中所有的 標準字型,包括 Courier, Arial (或 Helvetica), TimesNewRoman, Symbol, 和 ZapfDingbats. 請造訪"管理字體"文章中的" IronPDF 中的標準字體"部分,以了解這些字體類型的斜體、粗體和傾斜變體。

ZapfDingbats 字型可以顯示如 ▲ 等符號。 如需支援符號的完整清單,請造訪 Wikipedia on Zapf Dingbats

在 PDF 上輸出字體範例

顯示 Arial、Courier、Helvetica 和 Times New Roman 系列字型的字型樣本,包含粗體、斜體和斜體變體

如何使用換行添加文字?

繪製文字操作支援換行符,可讓您使用內建換行符渲染文本,以獲得更好的格式和視覺清晰度。 這在新增多行註解或建立結構化文字佈局時非常有用。

要實現這一點,請在文字字串中新增newline characters (\n) 。 使用上面的範例:

// Multi-line text example with proper spacing
string textWithNewlines = "Some text\nSecond line\nThird line with more content";
pdfDoc.DrawText(textWithNewlines, font, position);

// You can also use Environment.NewLine for platform-specific line breaks
string platformText = $"Line 1{Environment.NewLine}Line 2{Environment.NewLine}Line 3";
pdfDoc.DrawText(platformText, font, position);
// Multi-line text example with proper spacing
string textWithNewlines = "Some text\nSecond line\nThird line with more content";
pdfDoc.DrawText(textWithNewlines, font, position);

// You can also use Environment.NewLine for platform-specific line breaks
string platformText = $"Line 1{Environment.NewLine}Line 2{Environment.NewLine}Line 3";
pdfDoc.DrawText(platformText, font, position);
$vbLabelText   $csharpLabel

如何使用自訂字型?

DrawText 方法支援自訂字型,讓您的排版選項超越標準字型。 在保持品牌一致性或使用專用字型時,此功能至關重要。 如需進階的字型管理,請參閱我們的 在 PDF 中管理字型的指南。

以下是一個範例,內文加入了 Pixelify Sans 字型

:path=/static-assets/pdf/content-code-examples/how-to/draw-text-and-bitmap-draw-custom-font.cs
using IronPdf;
using IronSoftware.Drawing;
using System.IO;

ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>testing</h1>");

// Add custom font to the PDF
byte[] fontByte = File.ReadAllBytes(@".\PixelifySans-VariableFont_wght.ttf");
var addedFont = pdf.Fonts.Add(fontByte);

// Draw text on PDF
pdf.DrawText("Iron Software", addedFont.Name, FontSize: 12, PageIndex: 0, X: 100, Y: 600, Color.Black, Rotation: 0);

pdf.SaveAs("drawCustomFont.pdf");
$vbLabelText   $csharpLabel

進階文字定位

在精確定位文字時,請考慮以下提示:

  • 頁面尺寸:使用 pdf.Pages[pageIndex].Widthpdf.Pages[pageIndex].Height 取得頁面尺寸
  • 旋轉:旋轉參數可接受角度 (0-360),適用於有角度的文字。
  • 顏色選項:除了基本顏色之外,請使用 RGB 值:Color.FromArgb(255, 100, 100)

如何在 PDF 上繪製圖像?

IronPDF 的 DrawBitmap 方法可讓您在現有的 PDF 文件中加入位圖。 此方法的功能類似於 Image Stamper 功能,可讓您在現有的 PDF 上標示圖片。 如需複雜的圖片處理需求,請參閱我們的 在 PDF 中加入圖片指南。

請注意DrawBitmap方法最適合處理大型影像。 使用較小解析度的圖片時,可能會遇到以下例外情況:IronPdf.Exceptions.IronPdfNativeException: 'Error while drawing image: data length (567000) is less than expected (756000)'. 要克服這個問題,請使用 Image Stamper,它可以處理各種尺寸的圖像。

範例影像

Iron Software 標誌,品牌背景上有彩色 3D 互鎖幾何設計

實作是什麼樣子?

:path=/static-assets/pdf/content-code-examples/how-to/draw-text-and-bitmap-draw-bitmap.cs
using IronPdf;
using IronSoftware.Drawing;

ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>testing</h1>");

// Open the image from file
AnyBitmap bitmap = AnyBitmap.FromFile("ironSoftware.png");

// Draw the bitmp on PDF
pdf.DrawBitmap(bitmap, 0, 50, 250, 500, 300);

pdf.SaveAs("drawImage.pdf");
$vbLabelText   $csharpLabel

輸出 PDF

還有哪些其他參數可用?

  • PixelFormatPixelFormat屬性指定位圖的色彩資料格式,主要是控制透明度支援。 預設值為Format32bppArgb。 透過傳入參數作為選項,在像素枚舉格式 Format32bppRgbFormat32bppArgb 之間進行選擇。 這在處理 PDF 中的 背景和前景元素時非常有用。

  • IgnorePageRotation:這個 bool 屬性決定繪圖位圖時,方法是否忽略頁面旋轉。預設值為 false。 特別是在所有頁面上一致地應用水印時,不論轉換方式如何,都會非常有用。

常見使用案例與最佳實務

在 PDF 上繪製文字和圖片時,請考慮這些實際應用:

1.動態水印:在敏感文件上加入公司標誌或"CONFIDENTIAL"戳記 2.頁面編號:在所有頁面上以一致的位置繪製頁碼 3.簽名位置:在表單的指定位置新增簽名影像 4.標題/頁腳增強:以動態內容補足現有的標題

為了除錯和監控 PDF 作業,請執行 自訂記錄 以追蹤繪圖作業並確保正確執行。

效能考量

在處理多頁或大型文件時:

  • 盡可能進行批次作業,以盡量減少記憶體使用量
  • 使用後棄置位圖物件以釋放資源
  • 考慮預先載入常用的圖片以改善效能

準備好看看您還能做些什麼嗎? 在此查看我們的教學頁面: 編輯 PDFs

常見問題解答

我可以使用哪些方法將文字和圖片新增至現有的 PDF?

IronPDF 提供了兩種主要的方法來為現有的 PDF 添加內容:DrawText 方法用於添加文字,DrawBitmap 方法用於添加圖片。這些方法允許您在不改變原始文件內容的情況下,使用水印、標誌和註釋自訂 PDF。

繪製文字時,PDF 坐標系統如何運作?

在 IronPDF 中,PDF 坐標系的原點 (0,0) 位於頁面的左下角。X 值向右增加,Y 值向上增加。這與許多原點位於左上角的圖形系統不同。

在 PDF 上繪製文字時支援哪些字型?

IronPDF 的 DrawText 方法支援所有標準字體,包括 Courier、Arial (Helvetica)、Times New Roman、Symbol 和 ZapfDingbats。這些字體也有斜體、粗體和斜體等變體。ZapfDingbats 字型可用於顯示特殊符號。

我可以在一次操作中將文字和圖片同時加入 PDF 嗎?

是的,IronPDF 允許您將方法鏈結在一起。您可以使用 ChromePdfRenderer 創建 PDF,然後在一行代碼中依次應用 DrawText 和 DrawBitmap 方法,這樣就可以高效地在 PDF 文件中添加多個元素。

在 PDF 上繪製文字和圖片的常見用例有哪些?

IronPDF 的繪圖功能常用於加入水印以保護文件、插入公司標誌以建立品牌、建立註解以檢閱文件、改善視覺外觀、促進資料可視化,以及建立互動式表格。

Curtis Chau
技術撰稿人

Curtis Chau 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。

準備好開始了嗎?
Nuget 下載 17,570,948 | 版本: 2026.2 剛剛發布