本文主要是介绍通过C#获取PDF中指定文本或所有文本的字体信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《通过C#获取PDF中指定文本或所有文本的字体信息》在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响,然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文...
引言
在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响。然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文档。获取PDF中的字体信息可以解决这个问题,让我们能够更好地处理这些文件。无论是用于重新设计、文档翻译还是个人学习,了解如何获取PDF中的字体信息都是一项非常有用的技能。本文将介绍如何通过C#获取PDF中指定文本或所有文本的字体信息。
获取字体的操作需要用到第三方库 Spire.PDF for .NET,我们可以通过以下链接下载产品包后手动添加引用,或者直China编程接通过NuGet安装。
点击下载 Spire.PDF for.NET
C# 获取PDF中指定文本的字体信息
通过使用Spire.PDF for .NET提供的 PdfTextFragment
类下的各属性,我们可以获取字体名称、大小、样式和颜色。主要实现步骤如下
- 加载 PDF 文件,然后获取指定页面。
- 通过
PdfTextFinder.Find()
方法查找指定文本,并返回一个PdfTextFragment
对象。 - 创建一个
StringBuilder
实例来存储信息。 - 遍历所有查找到的文本
- 通过
PdfTextFragment.Text
属性获取找到的文本内容。 - 通过
PdfTextFragment.TextStateuqnuOPBCVPs[0].FontName
属性获取找到的文本的字体名称。 - 通过
PdfTextFragment.TextStates[0].FontSize
属性获取找到的文本的字体大小。 - 通过
PdfTextFragment.TextStates[0].FjavascriptontFamily
属性获取找到的文本的字体类型。 - 通过
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实例 StringBuildChina编程er 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.UsedFjavascriptonts; // 创建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()); } } }
到此这篇关于通过C#获取PDF中指定文本或所有文本的字体信息的文章就介绍到这了,更多相关C#获取PDF文本信息内容请搜索编程China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持China编程(www.chinasem.cn)!
这篇关于通过C#获取PDF中指定文本或所有文本的字体信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!