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

在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响。然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文档。获取PDF中的字体信息可以解决这个问题,让我们能够更好地处理这些文件。无论是用于重新设计、文档翻译还是个人学习,了解如何获取PDF中的字体信息都是一项非常有用的技能。本文将介绍如何通过C#获取PDF中指定文本或所有文本的字体信息

文章目录

    • [C# 获取PDF中指定文本的字体信息](# 获取PDF中指定文本的字体信息)
    • [C# 获取PDF文档中用到的所有字体信息](# 获取PDF文档中用到的所有字体信息)

获取字体的操作需要用到第三方库 Spire.PDF for .NET,我们可以通过以下链接下载产品包后手动添加引用,或者直接通过NuGet安装。

点击下载 Spire.PDF for.NET

C# 获取PDF中指定文本的字体信息

通过使用Spire.PDF for .NET提供的 PdfTextFragment 类下的各属性,我们可以获取字体名称、大小、样式和颜色。主要实现步骤如下

  1. 加载 PDF 文件,然后获取指定页面。
  2. 通过 PdfTextFinder.Find() 方法查找指定文本,并返回一个 PdfTextFragment 对象。
  3. 创建一个StringBuilder实例来存储信息。
  4. 遍历所有查找到的文本
  5. 通过 PdfTextFragment.Text 属性获取找到的文本内容。
  6. 通过 PdfTextFragment.TextStates[0].FontName 属性获取找到的文本的字体名称。
  7. 通过 PdfTextFragment.TextStates[0].FontSize 属性获取找到的文本的字体大小。
  8. 通过 PdfTextFragment.TextStates[0].FontFamily 属性获取找到的文本的字体类型。
  9. 通过 PdfTextFragment.TextStates[0].IsBoldPdfTextFragment.TextStates[0].IsSimulateBold 属性指示字体是否加粗或模拟加粗(字体样式设置为填充和描边)。
  10. 通过 PdfTextFragment.TextStates[0].IsItalic 属性指示字体是否为斜体.
  11. 使用 PdfTextFragment.TextStates[0].ForegroundColor 属性获取找到的文本的字体颜色。
  12. 将获取到的字体信息添加到StringBuilder实例中,然后写入 txt 文件。

C#代码:

csharp 复制代码
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文档中使用到的字体,它提供了不同的属性来帮助我们获取字体名称、大小、类型和样式等。主要实现步骤如下:

  1. 加载 PDF 文件。
  2. 通过 PdfDocument.UsedFonts 属性获取 PDF 文件中使用的所有字体。
  3. 创建一个StringBuilder实例来存储信息。
  4. 遍历所有使用到的字体。
  5. 通过 PdfUsedFont.Name 属性获取字体名称。
  6. 通过 PdfUsedFont.Size 属性获取字体大小。
  7. 通过 PdfUsedFont.Type 属性获取字体类型。
  8. 通过 PdfUsedFont.Style 属性获取字体样式。
  9. 将获取到的字体信息添加到StringBuilder实例中,然后写入 txt 文件。

C#代码:

csharp 复制代码
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());
        }
    }
}
相关推荐
d3soft1 小时前
deepseek清华大学第二版 如何获取 DeepSeek如何赋能职场应用 PDF文档 电子档(附下载)
ai·pdf·教程·deepseek·赋能职场
hello_simon1 小时前
【Word转PDF】在线Doc/Docx转换为PDF格式 免费在线转换 功能强大好用
职场和发展·pdf·word·学习方法·word转pdf·石墨文档·word转换
周杰伦fans2 小时前
C#中修饰符
开发语言·c#
avi91114 小时前
[AI相关]Unity的C#代码如何简写
unity·c#·语法糖
快乐的二进制鸭4 小时前
uniapp实现app的pdf预览
pdf·uni-app
CoderIsArt5 小时前
openGL和C#下使用openGL
开发语言·c#
追逐时光者6 小时前
Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
后端·.net
三月七(爱看动漫的程序员)6 小时前
与本地电脑PDF文档对话的PDF问答程序
前端·人工智能·chrome·gpt·搜索引擎·pdf·知识图谱
ceffans7 小时前
PDF文档中文本解析
c++·windows·pdf
SummerGao.7 小时前
Windows 快速搭建C++开发环境,安装C++、CMake、QT、Visual Studio、Setup Factory
c++·windows·qt·cmake·visual studio·setup factory