C# 获取PDF文档中的字体信息(字体名、大小、颜色、样式等
在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响。然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文档。获取PDF中的字体信息可以解决这个问题,让我们能够更好地处理这些文件。无论是用于重新设计、文档翻译还是个人学习,了解如何获取PDF中的字体信息都是一项非常有用的技能。本文将介绍如何通过C#获取PDF中指定文本或所有文本的字体信息。
获取字体的操作需要用到第三方库 Spire.PDF for .NET,我们可以通过以下链接下载产品包后手动添加引用,或者直接通过NuGet安装。
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://blog.csdn.net/Eiceblue/article/details/145186864
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!