如何管理 PDF 中的字体

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

Chaknith

字体是一组具有统一风格和设计的字符、符号和字形。它代表一种特定的字体、大小、重量和风格 (如普通、粗体、斜体等。) 的文字。字体在排版中的作用是以视觉上吸引人和连贯的方式显示文字。

IronPDF 提供了一种管理字体的便捷方法,具有查找字体、获取字体、嵌入字体、解除嵌入字体和替换字体等功能。

适用于PDF的C# NuGet库

安装使用 NuGet

Install-Package IronPdf
Java PDF JAR

下载 DLL

下载DLL

手动安装到你的项目中

适用于PDF的C# NuGet库

安装使用 NuGet

Install-Package IronPdf
Java PDF JAR

下载 DLL

下载DLL

手动安装到你的项目中

开始在您的项目中使用IronPDF,并立即获取免费试用。

第一步:
green arrow pointer

查看 IronPDFNuget 用于快速安装和部署。它有超过800万次下载,正在使用C#改变PDF。

适用于PDF的C# NuGet库 nuget.org/packages/IronPdf/
Install-Package IronPdf

考虑安装 IronPDF DLL 直接。下载并手动安装到您的项目或GAC表单中: IronPdf.zip

手动安装到你的项目中

下载DLL

查找和检索字体

检索字体

访问字体属性将返回PdfFontCollection对象,该对象包含文档中所有字体的列表。通过遍历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
VB   C#

查找字体

使用 IronPdf 查找特定字体非常简单。使用 PdfFontCollection 对象,我们可以将字体名称指定为一个用方括号括起来的字符串。例如字体 ["特殊字体名称"].这将返回一个 PdfFont 对象,我们可以用它来检查属性和执行其他方法。

: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")
VB   C#

添加字体

使用 Add 方法将标准字体和字体文件添加为字节数据。接受字体名称的 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")
VB   C#

嵌入字体

嵌入字体是指在 PDF 文档中包含字体的字节流数据。这样,就不需要在系统中安装字体就能正常查看 PDF 文档了。虽然这通常会增加 PDF 文档的文件大小,但它有利于视觉上的一致性,而无需额外安装字体。

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

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

// Select which font to embed
PdfFont targetFont = pdf.Fonts["MyCustomFont"];

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

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

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

' Select which font to embed
Private targetFont As PdfFont = pdf.Fonts("MyCustomFont")

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

' Embed the font
pdf.Fonts.Last().Embed(fontData)
VB   C#

Unembed 字体

解嵌入字体是指删除 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()
VB   C#

替换字体

字体替换操作将保留 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)
VB   C#

标准字体

PDF 中的 14 种标准字体也称为 "Base 14 Fonts "或 "Standard Type 1 Fonts",它们组成了一组字体,在 PDF 阅读器中得到广泛支持,且无需嵌入到文档中。标准字体定义了 14 种字体,它们保证 (根据 PDF 文档标准) 在处理 PDF 文档时可用。

  • 信使
  • Courier-Bold
  • Courier-Oblique
  • Courier-BoldOblique
  • Helvetica
  • 黑体
  • Helvetica-Oblique
  • Helvetica-BoldOblique
  • Times-Roman
  • 泰晤士黑体
  • Times-Italic
  • Times-BoldItalic
  • 符号
  • ZapfDingbats

标准字体映射

为方便引用标准字体,多个字符串名称指向同一字体。

映射到 Courier

  • StandardFont.Courier

    • Courier

    • CourierNew

    • CourierNewPSMT

    • CourierStd

Map to Courier-Bold

  • StandardFont.CourierBold

    • Courier,Bold

    • Courier-Bold

    • 粗体

    • CourierNew,Bold

    • CourierNew-Bold

    • CourierNewBold

    • CourierNewPS-BoldMT

    • CourierStd-Bold

Map to Courier-Oblique

  • StandardFont.CourierOblique

    • Courier, 斜体

    • Courier 斜体

    • Courier斜体

    • CourierNew,Italic

    • CourierNew-Italic

    • CourierNewItalic

    • CourierNewPS-ItalicMT

    • CourierStd-Oblique

Map to Courier-BoldOblique

  • StandardFont.CourierBoldOblique

    • Courier 加粗斜体

    • Courier-BoldOblique

    • CourierBoldItalic

    • Courier New,粗斜体

    • CourierNew-BoldItalic

    • CourierNewBoldItalic

    • CourierNewPS-BoldItalicMT

    • CourierStd-BoldOblique

Map to Helvetica

  • StandardFont.Helvetica

    • Arial

    • ArialMT

    • Helvetica

Map to Helvetica-Bold

  • StandardFont.HelveticaBold

    • 黑体

    • 黑体

    • Arial-BoldMT

    • 黑体

    • 黑体 ArialMT

    • ArialRoundedMTBold

    • 黑体

    • 黑体

    • 黑体

Map to Helvetica-Oblique

  • StandardFont.HelveticaOblique

    • Arial、斜体

    • Arial-斜体

    • Arial-ItalicMT

    • ArialItalic

    • ArialMT,斜体

    • 斜体 Helvetica

    • Helvetica 意大利文

    • 斜体

    • HelveticaItalic

Map to Helvetica-BoldOblique

  • StandardFont.HelveticaBoldOblique

    • Arial,粗体斜体

    • Arial-BoldItalic

    • Arial-BoldItalicMT

    • ArialBoldItalic

    • ArialMT,粗体斜体

    • 黑体 Helvetica

    • Helvetica-BoldItalic

    • Helvetica-BoldOblique

    • HelveticaBoldItalic

Map to Times-Roman

  • StandardFont.Times

    • Times-Roman

    • TimesNewRoman

    • TimesNewRomanPS

    • TimesNewRomanPSMT

映射到 Times-Bold

  • StandardFont.TimesBold

    • Times-Bold

    • TimesBold

    • 黑体

    • 黑体

    • TimesNewRoman 黑体

    • TimesNewRomanPS-Bold

    • TimesNewRomanPS-BoldMT

    • TimesNewRomanPSMT,Bold

Map to Times-Italic

  • StandardFont.TimesOblique

    • Times-Italic

    • TimesItalic

    • 斜体

    • 泰晤士新罗马字体

    • TimesNewRomanItalic

    • TimesNewRomanPS-Italic

    • TimesNewRomanPS-ItalicMT

    • 斜体 TimesNewRomanPSMT

映射到 Times-BoldItalic

  • StandardFont.TimesBoldOblique

    • Times-BoldItalic

    • TimesBoldItalic

    • Times NewRoman,粗体斜体

    • TimesNewRoman-BoldItalic

    • 时代新罗马黑体

    • TimesNewRomanPS-BoldItalic

    • TimesNewRomanPS-BoldItalicMT

    • TimesNewRomanPSMT 加粗斜体

映射到符号

  • StandardFont.Symbol

    • 符号

    • 符号MT

Map to ZapfDingbats

  • StandardFont.Dingbats

    • ZapfDingbats

查克尼特·宾

软件工程师

Chaknith 是开发者中的福尔摩斯。他第一次意识到自己可能在软件工程方面有前途,是在他出于乐趣做代码挑战的时候。他的重点是 IronXL 和 IronBarcode,但他为能帮助客户解决每一款产品的问题而感到自豪。Chaknith 利用他从直接与客户交谈中获得的知识,帮助进一步改进产品。他的轶事反馈不仅仅局限于 Jira 票据,还支持产品开发、文档编写和市场营销,从而提升客户的整体体验。当他不在办公室时,他可能会在学习机器学习、编程或徒步旅行。