C# 获取PDF文档中的字体信息(字体名、巨细、颜色、样式等

[复制链接]
发表于 2025-11-8 05:54:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在计划和出书行业中,字体的选择和利用对终极作品的质量有侧紧张影响。然而,偶尔我们大概会遇到包罗未知字体的PDF文件,这使得我们无法正确地复制或修改文档。获取PDF中的字体信息可以办理这个标题,让我们可以或许更好地处置惩罚这些文件。无论是用于重新计划、文档翻译照旧个人学习,相识怎样获取PDF中的字体信息都是一项非常有效的技能。本文将先容怎样通过C#获取PDF中指定文本或全部文本的字体信息。


   获取字体的利用必要用到第三方库 Spire.PDF for .NET,我们可以通过以下链接下载产物包后手动添加引用,大概直接通过NuGet安装。
  ▶ 点击下载 Spire.PDF for.NET
  C# 获取PDF中指定文本的字体信息

通过利用Spire.PDF for .NET提供的 PdfTextFragment 类下的各属性,我们可以获取字体名称、巨细、样式和颜色。紧张实现步调如下

  • 加载 PDF 文件,然后获取指定页面。
  • 通过 PdfTextFinder.Find() 方法查找指定文本,并返回一个 PdfTextFragment 对象。
  • 创建一个StringBuilder实例来存储信息。
  • 遍历全部查找到的文本
  • 通过 PdfTextFragment.Text 属性获取找到的文本内容。
  • 通过 PdfTextFragment.TextStates[0].FontName 属性获取找到的文本的字体名称。
  • 通过 PdfTextFragment.TextStates[0].FontSize 属性获取找到的文本的字体巨细。
  • 通过 PdfTextFragment.TextStates[0].FontFamily 属性获取找到的文本的字体范例。
  • 通过 PdfTextFragment.TextStates[0].IsBold 和 PdfTextFragment.TextStates[0].IsSimulateBold 属性指示字体是否加粗或模拟加粗(字体样式设置为添补和描边)。
  • 通过 PdfTextFragment.TextStates[0].IsItalic 属性指示字体是否为斜体.
  • 利用 PdfTextFragment.TextStates[0].ForegroundColor 属性获取找到的文本的字体颜色。
  • 将获取到的字体信息添加到StringBuilder实例中,然后写入 txt 文件。
C#代码:
  1. using Spire.Pdf;
  2. using Spire.Pdf.Texts;
  3. using System.Collections.Generic;
  4. using System.Drawing;
  5. using System.IO;
  6. using System.Text;
  7. namespace GetTextFont
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             // 加载PDF文件
  14.             PdfDocument pdf = new PdfDocument();
  15.             pdf.LoadFromFile("E:\\PythonPDF\\南极.pdf");
  16.             // 获取第一页
  17.             PdfPageBase page = pdf.Pages[0];
  18.             // 创建PdfTextFinder实例
  19.             PdfTextFinder finds = new PdfTextFinder(page);
  20.             // 查找页面上指定文本
  21.             finds.Options.Parameter = TextFindParameter.None;
  22.             List<PdfTextFragment> result = finds.Find("南极洲");
  23.             // 创建StringBuilder实例
  24.             StringBuilder str = new StringBuilder();
  25.             // 遍历所有查找到的文本
  26.             foreach (PdfTextFragment find in result)
  27.             {
  28.                 // 获取文本
  29.                 string text = find.Text;
  30.                 // 获取字体名
  31.                 string FontName = find.TextStates[0].FontName;
  32.                 // 获取字体大小
  33.                 float FontSize = find.TextStates[0].FontSize;
  34.                 // 获取字体类型
  35.                 string FontFamily = find.TextStates[0].FontFamily;
  36.                 // 判断是否加粗或模拟加粗
  37.                 bool IsBold = find.TextStates[0].IsBold;
  38.                 bool IsSimulateBold = find.TextStates[0].IsSimulateBold;
  39.                 // 判断是否为斜体
  40.                 bool IsItalic = find.TextStates[0].IsItalic;
  41.                 // 获取字体颜色
  42.                 Color color = find.TextStates[0].ForegroundColor;
  43.                 // 将获取到的信息添加到StringBuilder实例中
  44.                 str.AppendLine(text);
  45.                 str.AppendLine("字体名: " + FontName);
  46.                 str.AppendLine("字体大小: " + FontSize);
  47.                 str.AppendLine("字体系列: " + FontFamily);
  48.                 str.AppendLine("是否加粗: " + IsBold);
  49.                 str.AppendLine("是否模拟加粗: " + IsSimulateBold);
  50.                 str.AppendLine("是否为斜体: " + IsItalic);
  51.                 str.AppendLine("字体颜色:" + color);
  52.                 str.AppendLine(" ");
  53.             }
  54.             // 写入一个txt文件
  55.             File.WriteAllText("Pdf字体.txt", str.ToString());
  56.         }
  57.     }
  58. }
复制代码

C# 获取PDF文档中用到的全部字体信息

PdfUsedFont 类表现PDF文档中利用到的字体,它提供了差异的属性来资助我们获取字体名称、巨细、范例和样式等。紧张实现步调如下:

  • 加载 PDF 文件。
  • 通过 PdfDocument.UsedFonts 属性获取 PDF 文件中利用的全部字体。
  • 创建一个StringBuilder实例来存储信息。
  • 遍历全部利用到的字体。
  • 通过 PdfUsedFont.Name 属性获取字体名称。
  • 通过 PdfUsedFont.Size 属性获取字体巨细。
  • 通过 PdfUsedFont.Type 属性获取字体范例。
  • 通过 PdfUsedFont.Style 属性获取字体样式。
  • 将获取到的字体信息添加到StringBuilder实例中,然后写入 txt 文件。
C#代码:
  1. using Spire.Pdf;
  2. using Spire.Pdf.Graphics.Fonts;
  3. using Spire.Pdf.Graphics;
  4. using System.IO;
  5. using System.Text;
  6. namespace GetTextFont
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             // 加载PDF文件
  13.             PdfDocument pdf = new PdfDocument();
  14.             pdf.LoadFromFile("E:\\PythonPDF\\南极.pdf");
  15.             // 获取PDF文件中使用到的字体
  16.             PdfUsedFont[] fonts = pdf.UsedFonts;
  17.             // 创建StringBuilder实例
  18.             StringBuilder str = new StringBuilder();
  19.             // 遍历所有使用到的字体
  20.             foreach (PdfUsedFont font in fonts)
  21.             {
  22.                 // 获取字体名
  23.                 string name = font.Name;
  24.                 // 获取字体大小
  25.                 float size = font.Size;
  26.                 // 获取字体类型
  27.                 PdfFontType type = font.Type;
  28.                 // 获取字体样式
  29.                 PdfFontStyle style = font.Style;
  30.                 // 将获取到的信息添加到StringBuilder实例中
  31.                 str.AppendLine("字体名称: " + name + " 字体大小: " + size + " 字体类型: " + type + " 字体样式: " + style);
  32.             }
  33.             // 写入一个txt文件
  34.             File.WriteAllText("Pdf字体信息.txt", str.ToString());
  35.         }
  36.     }
  37. }
复制代码

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表