如何在 HTML 轉 PDF 轉換過程中管理字體

How to Manage Fonts in PDFs

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

字型是一組具有一致風格和設計的字符、符號和字形。 它代表了文本特定的字型、大小、粗細和風格(如常規、粗體、斜體等)。 字型用於印刷字體排版中,以視覺上吸引且一致的方式顯示文本。

IronPDF 提供了一種方便的方式來管理字型,提供如尋找字型、獲取字型、嵌入字型、取消嵌入字型和替換字型等功能。

作為標題:2(快速入門:管理和嵌入您的 PDF 字型)

開始使用 IronPDF 來簡化您 PDF 文件中的字型管理。 本快速指南展示了如何在 PDF 中嵌入所有字型,以確保不同平台間的視覺一致性。 只需幾行代碼,您就可以增強 PDF 文件的外觀並保持相容性而無需額外的字型安裝。

Nuget IconGet started making PDFs with NuGet now:

  1. Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf

  2. Copy and run this code snippet.

    var pdf = PdfDocument.FromHtml("<p style='font‑family:MyCustomFont;'>Hello world!</p>");
    pdf.Fonts.Add("MyCustomFont", File.ReadAllBytes("MyCustomFont.ttf"))
      .Embed()
      .SaveAs("withCustomFont.pdf");
  3. Deploy to test on your live environment

    Start using IronPDF in your project today with a free trial
    arrow pointer
class="hsg-featured-snippet">

最小化工作流程(5 步驟)

  1. 下載 IronPDF C# 庫
  2. 使用 Add 方法將字型添加到字型集合
  3. 使用 Embed 方法嵌入字型以確保持久的視覺效果
  4. 使用 Unembed 方法取消嵌入字型以減少尺寸
  5. 使用 Replace 方法輕鬆替換字型

查找和檢索字型

檢索字型

訪問 Fonts 屬性將返回 PdfFontCollection 物件,其中包含文件中所有字型的清單。 Fonts 屬性可以直接通過迭代 PdfFontCollection 物件訪問。

:path=/static-assets/pdf/content-code-examples/how-to/manage-font-retrieve-font.cs
using IronPdf;
using IronPdf.Fonts;
using System.Collections.Generic;

// Import PDF
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Retreive font
PdfFontCollection fonts = pdf.Fonts;
Imports IronPdf
Imports IronPdf.Fonts
Imports System.Collections.Generic

' Import PDF
Private pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Retreive font
Private fonts As PdfFontCollection = pdf.Fonts
$vbLabelText   $csharpLabel

查找字型

使用 IronPDF 查找特定字型非常簡單。 使用 PdfFontCollection 物件,您可以指定字型名稱。 此示例展示了如何按名稱訪問字型物件並檢查屬性。

:path=/static-assets/pdf/content-code-examples/how-to/manage-font-find-font.cs
using IronPdf;
using IronPdf.Fonts;
using System.Collections.Generic;
using System.Linq;

// Import PDF
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Find font
PdfFont font = pdf.Fonts["SpecialFontName"];
Imports IronPdf
Imports IronPdf.Fonts
Imports System.Collections.Generic
Imports System.Linq

' Import PDF
Private pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Find font
Private font As PdfFont = pdf.Fonts("SpecialFontName")
$vbLabelText   $csharpLabel

添加字型

使用 Add 方法將標準字型和作為位元資料的字型檔案添加。 僅接受字型名稱的方法只接受14 種標準字型之一。 添加標準字型不會嵌入它,因為標準字型已被保證在作業系統上可用。

:path=/static-assets/pdf/content-code-examples/how-to/manage-font-add-font.cs
using IronPdf;
using IronPdf.Fonts;

// Import PDF
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Add font
pdf.Fonts.Add("Helvetica");
Imports IronPdf
Imports IronPdf.Fonts

' Import PDF
Private pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Add font
pdf.Fonts.Add("Helvetica")
$vbLabelText   $csharpLabel

嵌入字型

嵌入字型意味着在 PDF 文件中包含字型的位元流資料。 這樣,無需在系統上安裝字型即可正確查看 PDF 文件。 雖然這通常會增加 PDF 文件的大小,但有助於保持視覺一致性而不需要額外安裝字型。

:path=/static-assets/pdf/content-code-examples/how-to/manage-font-embed-font.cs
using IronPdf;
using System.Linq;

// Import PDF
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Add the font
byte[] fontData = System.IO.File.ReadAllBytes("dir/to/font.ttf");

// Embed the font
pdf.Fonts.Last().Embed(fontData);
Imports IronPdf
Imports System.Linq

' Import PDF
Private pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Add the font
Private fontData() As Byte = System.IO.File.ReadAllBytes("dir/to/font.ttf")

' Embed the font
pdf.Fonts.Last().Embed(fontData)
$vbLabelText   $csharpLabel

取消嵌入字型

取消嵌入字型意味着移除包含在 PDF 文件中的嵌入字型的位元流資料。 目的是減少 PDF 文件的大小。使用 Unembed 方法來達成此目標。

:path=/static-assets/pdf/content-code-examples/how-to/manage-font-unembed-font.cs
using IronPdf;
using IronPdf.Fonts;

// Import PDF
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Get fonts
PdfFontCollection fonts = pdf.Fonts;

// Unembed a font
pdf.Fonts[0].Unembed();
Imports IronPdf
Imports IronPdf.Fonts

' Import PDF
Private pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Get fonts
Private fonts As PdfFontCollection = pdf.Fonts

' Unembed a font
pdf.Fonts(0).Unembed()
$vbLabelText   $csharpLabel

如果原始文檔中的字型過於罕見或缺乏替代,則在取消嵌入字型後輸出 PDF 中可能顯示損壞。 您可以通過檢查在 Adobe 中取消嵌入相同字型是否會導致相同問題來解決此問題。 如果在 Adobe 中也發生此問題,那麼這是預期行為。 然而,如果不是,請將問題報告給我們的支援團隊以便進一步調查。 損壞的字型看起來如下所示:

class="content-img-align-center">
class="center-image-wrapper"> 損壞字型 PDF

替換字型

字型替換操作將保留原來的字型資料結構,如樣式和字符編碼,但將其替換為新指定的字型。 用戶必須確保新字型與原字型很好地對應。

警告在一些罕見情況下,結果視覺效果可能不完全匹配。 這是當前字型替換方法的限制。

:path=/static-assets/pdf/content-code-examples/how-to/manage-font-replace-font.cs
using IronPdf;
using IronPdf.Fonts;
using System.Linq;

// Import PDF
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

byte[] fontData = System.IO.File.ReadAllBytes("dir/to/font.ttf");
// Get and replace Font
pdf.Fonts["Courier"].ReplaceWith(fontData);
Imports IronPdf
Imports IronPdf.Fonts
Imports System.Linq

' Import PDF
Private pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

Private fontData() As Byte = System.IO.File.ReadAllBytes("dir/to/font.ttf")
' Get and replace Font
pdf.Fonts("Courier").ReplaceWith(fontData)
$vbLabelText   $csharpLabel

標準字型

PDF 中的 14 種標準字型,也稱為“基本 14 字型”或“標準 Type 1 字型”,形成一組在 PDF 檢視器中廣泛支援且無需嵌入到文件中的字型。 標準字型定義了 14 種字型,這些字型在處理 PDF 文件時保證 (根據 PDF 文件標準) 可用。

  • Courier
  • Courier-Bold
  • Courier-Oblique
  • Courier-BoldOblique
  • Helvetica
  • Helvetica-Bold
  • Helvetica-Oblique
  • Helvetica-BoldOblique
  • Times-Roman
  • Times-Bold
  • Times-Italic
  • Times-BoldItalic
  • Symbol
  • ZapfDingbats

標準字型 Mapping

為了方便引用標準字型,多個字符串名稱指向相同字型。

映射到 Courier

  • StandardFont.Courier
    • Courier
    • CourierNew
    • CourierNewPSMT
    • CourierStd

映射到 Courier-Bold

  • StandardFont.CourierBold
    • Courier,Bold
    • Courier-Bold
    • CourierBold
    • CourierNew,Bold
    • CourierNew-Bold
    • CourierNewBold
    • CourierNewPS-BoldMT
    • CourierStd-Bold

映射到 Courier-Oblique

  • StandardFont.CourierOblique
    • Courier,Italic
    • Courier-Oblique
    • CourierItalic
    • CourierNew,Italic
    • CourierNew-Italic
    • CourierNewItalic
    • CourierNewPS-ItalicMT
    • CourierStd-Oblique

映射到 Courier-BoldOblique

  • StandardFont.CourierBoldOblique
    • Courier,BoldItalic
    • Courier-BoldOblique
    • CourierBoldItalic
    • CourierNew,BoldItalic
    • CourierNew-BoldItalic
    • CourierNewBoldItalic
    • CourierNewPS-BoldItalicMT
    • CourierStd-BoldOblique

映射到 Helvetica

  • StandardFont.Helvetica
    • Arial
    • ArialMT
    • Helvetica

映射到 Helvetica-Bold

  • StandardFont.HelveticaBold
    • Arial,Bold
    • Arial-Bold
    • Arial-BoldMT
    • ArialBold
    • ArialMT,Bold
    • ArialRoundedMTBold
    • Helvetica,Bold
    • Helvetica-Bold
    • HelveticaBold

映射到 Helvetica-Oblique

  • StandardFont.HelveticaOblique
    • Arial,Italic
    • Arial-Italic
    • Arial-ItalicMT
    • ArialItalic
    • ArialMT,Italic
    • Helvetica,Italic
    • Helvetica-Italic
    • Helvetica-Oblique
    • HelveticaItalic

映射到 Helvetica-BoldOblique

  • StandardFont.HelveticaBoldOblique
    • Arial,BoldItalic
    • Arial-BoldItalic
    • Arial-BoldItalicMT
    • ArialBoldItalic
    • ArialMT,BoldItalic
    • Helvetica,BoldItalic
    • Helvetica-BoldItalic
    • Helvetica-BoldOblique
    • HelveticaBoldItalic

映射到 Times-Roman

  • StandardFont.Times
    • Times-Roman
    • TimesNewRoman
    • TimesNewRomanPS
    • TimesNewRomanPSMT

映射到 Times-Bold

  • StandardFont.TimesBold
    • Times-Bold
    • TimesBold
    • TimesNewRoman,Bold
    • TimesNewRoman-Bold
    • TimesNewRomanBold
    • TimesNewRomanPS-Bold
    • TimesNewRomanPS-BoldMT
    • TimesNewRomanPSMT,Bold

映射到 Times-Italic

  • StandardFont.TimesOblique
    • Times-Italic
    • TimesItalic
    • TimesNewRoman,Italic
    • TimesNewRoman-Italic
    • TimesNewRomanItalic
    • TimesNewRomanPS-Italic
    • TimesNewRomanPS-ItalicMT
    • TimesNewRomanPSMT,Italic

映射到 Times-BoldItalic

  • StandardFont.TimesBoldOblique
    • Times-BoldItalic
    • TimesBoldItalic
    • TimesNewRoman,BoldItalic
    • TimesNewRoman-BoldItalic
    • TimesNewRomanBoldItalic
    • TimesNewRomanPS-BoldItalic
    • TimesNewRomanPS-BoldItalicMT
    • TimesNewRomanPSMT,BoldItalic

映射到 Symbol

  • StandardFont.Symbol
    • Symbol
    • SymbolMT

映射到 ZapfDingbats

  • StandardFont.Dingbats
    • ZapfDingbats

常見問題解答

如何尋找並列出PDF文件中使用的字體?

您可以使用 IronPDF 存取PdfDocument物件的Fonts屬性,該屬性提供了一個PdfFontCollection物件。遍歷此集合可以尋找並列出文件中使用的所有字體。

有哪些方法可以將字體加入 PDF 檔案中?

IronPDF 允許您使用Add方法添加字體,該方法可以包含標準字體或自訂字體檔案(以位元組資料形式)。此方法使您能夠擴展 PDF 文件中可用的字體範圍。

如何在 PDF 中嵌入字體以確保視覺一致性?

若要使用 IronPDF 嵌入字體,您可以從PdfFontCollection中擷取所需的字體,然後套用Embed方法。這樣可以確保字體的位元組流資料包含在 PDF 中,從而在不同系統上保持視覺一致性。

為什麼要取消嵌入PDF文件中的字體?

使用 IronPDF 解嵌字體是指移除嵌入的位元組流資料以減少檔案大小。當檔案大小是首要考慮因素且字體在大多數系統中都可用時,此方法非常有用。

如何替換PDF文件中的字型?

您可以使用 IronPDF 的PdfFontCollection中的Replace方法來取代 PDF 中的字型。這樣,您可以將現有字體替換為另一種字體,並確保其樣式和編碼盡可能與原始字體保持一致。

為什麼 PDF 中的 Base14 字體很重要?

Base 14 字體,或稱為標準 1 型字體,例如 Courier、Helvetica 和 Times Roman,至關重要,因為它們被所有 PDF 閱讀器普遍支持。這些字體無需嵌入,從而確保了相容性並減小了檔案大小。

PDF文件中是否可以使用自訂字體?

是的,IronPDF 支援新增自訂字體。透過使用Add方法並傳入字體文件數據,您可以將標準選項之外的任何字體新增至 PDF 文件中。

使用 IronPDF 管理 PDF 文件中的字型有哪些優勢?

IronPDF 提供強大的字型管理功能,讓您可以尋找、新增、嵌入、取消嵌入和替換字型。這種靈活性增強了文件的自訂程度,並確保了跨平台的視覺一致性。

IronPDF 是否完全相容於 .NET 10 的字型管理操作?

是的。 IronPDF 與 .NET 10 完全相容,支援所有字型管理操作(包括AddEmbedUnembedReplace和存取標準字型),無需任何變通方法或特殊配置。

A PHP Error was encountered

Severity: Warning

Message: Illegal string offset 'name'

Filename: sections/author_component.php

Line Number: 18

Backtrace:

File: /var/www/ironpdf.com/application/views/main/sections/author_component.php
Line: 18
Function: _error_handler

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 63
Function: view

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 64
Function: main_view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/how-to/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: Illegal string offset 'title'

Filename: sections/author_component.php

Line Number: 38

Backtrace:

File: /var/www/ironpdf.com/application/views/main/sections/author_component.php
Line: 38
Function: _error_handler

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 63
Function: view

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 64
Function: main_view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/how-to/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: Illegal string offset 'comment'

Filename: sections/author_component.php

Line Number: 48

Backtrace:

File: /var/www/ironpdf.com/application/views/main/sections/author_component.php
Line: 48
Function: _error_handler

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 63
Function: view

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 64
Function: main_view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/how-to/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

準備好開始了嗎?
Nuget 下載 16,154,058 | 版本: 2025.11 剛剛發布