在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响。然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文档。获取PDF中的字体信息可以解决这个问题,让我们能够更好地处理这些文件。无论是用于重新设计、文档翻译还是个人学习,了解如何获取PDF中的字体信息都是一项非常有用的技能。本文将介绍如何通过C#获取PDF中指定文本或所有文本的字体信息。
- C# 获取PDF中指定文本的字体信息
- C# 获取PDF文档中用到的所有字体信息
获取字体的操作需要用到第三方库 Spire.PDF for .NET,我们可以通过以下链接下载产品包后手动添加引用,或者直接通过NuGet安装。
https://www.e-iceblue.cn/Downloads/Spire-PDF-NET.html
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#代码:
using Spire.Pdf; using Spire.Pdf.Texts; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Text; namespace GetTextFont { class Program { static void Main(string[] args) { // 加载PDF文件 PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile("E:\\PythonPDF\\南极.pdf"); // 获取第一页 PdfPageBase page = pdf.Pages[0]; // 创建PdfTextFinder实例 PdfTextFinder finds = new PdfTextFinder(page); // 查找页面上指定文本 finds.Options.Parameter = TextFindParameter.None; List<PdfTextFragment> result = finds.Find("南极洲"); // 创建StringBuilder实例 StringBuilder str = new StringBuilder(); // 遍历所有查找到的文本 foreach (PdfTextFragment find in result) { // 获取文本 string text = find.Text; // 获取字体名 string FontName = find.TextStates[0].FontName; // 获取字体大小 float FontSize = find.TextStates[0].FontSize; // 获取字体类型 string FontFamily = find.TextStates[0].FontFamily; // 判断是否加粗或模拟加粗 bool IsBold = find.TextStates[0].IsBold; bool IsSimulateBold = find.TextStates[0].IsSimulateBold; // 判断是否为斜体 bool IsItalic = find.TextStates[0].IsItalic; // 获取字体颜色 Color color = find.TextStates[0].ForegroundColor; // 将获取到的信息添加到StringBuilder实例中 str.AppendLine(text); str.AppendLine("字体名: " + FontName); str.AppendLine("字体大小: " + FontSize); str.AppendLine("字体系列: " + FontFamily); str.AppendLine("是否加粗: " + IsBold); str.AppendLine("是否模拟加粗: " + IsSimulateBold); str.AppendLine("是否为斜体: " + IsItalic); str.AppendLine("字体颜色:" + color); str.AppendLine(" "); } // 写入一个txt文件 File.WriteAllText("Pdf字体.txt", str.ToString()); } } }
C# 获取PDF文档中用到的所有字体信息
PdfUsedFont 类表示PDF文档中使用到的字体,它提供了不同的属性来帮助我们获取字体名称、大小、类型和样式等。主要实现步骤如下:
- 加载 PDF 文件。
- 通过 PdfDocument.UsedFonts 属性获取 PDF 文件中使用的所有字体。
- 创建一个StringBuilder实例来存储信息。
- 遍历所有使用到的字体。
- 通过 PdfUsedFont.Name 属性获取字体名称。
- 通过 PdfUsedFont.Size 属性获取字体大小。
- 通过 PdfUsedFont.Type 属性获取字体类型。
- 通过 PdfUsedFont.Style 属性获取字体样式。
- 将获取到的字体信息添加到StringBuilder实例中,然后写入 txt 文件。
C#代码:
using Spire.Pdf; using Spire.Pdf.Graphics.Fonts; using Spire.Pdf.Graphics; using System.IO; using System.Text; namespace GetTextFont { class Program { static void Main(string[] args) { // 加载PDF文件 PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile("E:\\PythonPDF\\南极.pdf"); // 获取PDF文件中使用到的字体 PdfUsedFont[] fonts = pdf.UsedFonts; // 创建StringBuilder实例 StringBuilder str = new StringBuilder(); // 遍历所有使用到的字体 foreach (PdfUsedFont font in fonts) { // 获取字体名 string name = font.Name; // 获取字体大小 float size = font.Size; // 获取字体类型 PdfFontType type = font.Type; // 获取字体样式 PdfFontStyle style = font.Style; // 将获取到的信息添加到StringBuilder实例中 str.AppendLine("字体名称: " + name + " 字体大小: " + size + " 字体类型: " + type + " 字体样式: " + style); } // 写入一个txt文件 File.WriteAllText("Pdf字体信息.txt", str.ToString()); } } }
来源链接:https://www.cnblogs.com/Yesi/p/18813112
© 版权声明
本站所有资源来自于网络,仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您(转载者)自己承担!
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
THE END
暂无评论内容