通过C#获取PDF中指定文本或所有文本的字体信息

2025-01-18 04:50

本文主要是介绍通过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 类下的各属性,我们可以获取字体名称、大小、样式和颜色。主要实现步骤如下

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

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#代码:

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中指定文本或所有文本的字体信息的文章就介绍到这了,更多相关C#获取PDF文本信息内容请搜索编程China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持China编程(www.chinasem.cn)!

这篇关于通过C#获取PDF中指定文本或所有文本的字体信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1153119

相关文章

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文解析C#中的StringSplitOptions枚举

《一文解析C#中的StringSplitOptions枚举》StringSplitOptions是C#中的一个枚举类型,用于控制string.Split()方法分割字符串时的行为,核心作用是处理分割后... 目录C#的StringSplitOptions枚举1.StringSplitOptions枚举的常用

Java高效实现PowerPoint转PDF的示例详解

《Java高效实现PowerPoint转PDF的示例详解》在日常开发或办公场景中,经常需要将PowerPoint演示文稿(PPT/PPTX)转换为PDF,本文将介绍从基础转换到高级设置的多种用法,大家... 目录为什么要将 PowerPoint 转换为 PDF安装 Spire.Presentation fo

Java发送SNMP至交换机获取交换机状态实现方式

《Java发送SNMP至交换机获取交换机状态实现方式》文章介绍使用SNMP4J库(2.7.0)通过RCF1213-MIB协议获取交换机单/多路状态,需开启SNMP支持,重点对比SNMPv1、v2c、v... 目录交换机协议SNMP库获取交换机单路状态获取交换机多路状态总结交换机协议这里使用的交换机协议为常

5 种使用Python自动化处理PDF的实用方法介绍

《5种使用Python自动化处理PDF的实用方法介绍》自动化处理PDF文件已成为减少重复工作、提升工作效率的重要手段,本文将介绍五种实用方法,从内置工具到专业库,帮助你在Python中实现PDF任务... 目录使用内置库(os、subprocess)调用外部工具使用 PyPDF2 进行基本 PDF 操作使用

C#自动化实现检测并删除PDF文件中的空白页面

《C#自动化实现检测并删除PDF文件中的空白页面》PDF文档在日常工作和生活中扮演着重要的角色,本文将深入探讨如何使用C#编程语言,结合强大的PDF处理库,自动化地检测并删除PDF文件中的空白页面,感... 目录理解PDF空白页的定义与挑战引入Spire.PDF for .NET库核心实现:检测并删除空白页

C#利用Free Spire.XLS for .NET复制Excel工作表

《C#利用FreeSpire.XLSfor.NET复制Excel工作表》在日常的.NET开发中,我们经常需要操作Excel文件,本文将详细介绍C#如何使用FreeSpire.XLSfor.NET... 目录1. 环境准备2. 核心功能3. android示例代码3.1 在同一工作簿内复制工作表3.2 在不同

Java实现为PDF设置背景色和背景图片

《Java实现为PDF设置背景色和背景图片》在日常的文档处理中,PDF格式因其稳定性和跨平台兼容性而广受欢迎,本文将深入探讨如何利用Spire.PDFforJava库,以简洁高效的方式为你的PDF文档... 目录库介绍与安装步骤Java 给 PDF 设置背景颜色Java 给 PDF 设置背景图片总结在日常的

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型

Java轻松实现PDF转换为PDF/A的示例代码

《Java轻松实现PDF转换为PDF/A的示例代码》本文将深入探讨Java环境下,如何利用专业工具将PDF转换为PDF/A格式,为数字文档的永续保存提供可靠方案,文中的示例代码讲解详细,感兴趣的小伙伴... 目录为什么需要将PDF转换为PDF/A使用Spire.PDF for Java进行转换前的准备通过