在设计和出版行业中,字体的选择和使用对终极作品的质量有着紧张影响。然而,有时我们可能会碰到包罗未知字体的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());
- }
- }
- }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
|