通过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

相关文章

如何利用Java获取当天的开始和结束时间

《如何利用Java获取当天的开始和结束时间》:本文主要介绍如何使用Java8的LocalDate和LocalDateTime类获取指定日期的开始和结束时间,展示了如何通过这些类进行日期和时间的处... 目录前言1. Java日期时间API概述2. 获取当天的开始和结束时间代码解析运行结果3. 总结前言在J

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

java获取图片的大小、宽度、高度方式

《java获取图片的大小、宽度、高度方式》文章介绍了如何将File对象转换为MultipartFile对象的过程,并分享了个人经验,希望能为读者提供参考... 目China编程录Java获取图片的大小、宽度、高度File对象(该对象里面是图片)MultipartFile对象(该对象里面是图片)总结java获取图片

Java通过反射获取方法参数名的方式小结

《Java通过反射获取方法参数名的方式小结》这篇文章主要为大家详细介绍了Java如何通过反射获取方法参数名的方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、前言2、解决方式方式2.1: 添加编译参数配置 -parameters方式2.2: 使用Spring的内部工具类 -

Java如何获取视频文件的视频时长

《Java如何获取视频文件的视频时长》文章介绍了如何使用Java获取视频文件的视频时长,包括导入maven依赖和代码案例,同时,也讨论了在运行过程中遇到的SLF4J加载问题,并给出了解决方案... 目录Java获取视频文件的视频时长1、导入maven依赖2、代码案例3、SLF4J: Failed to lo

使用Python实现批量分割PDF文件

《使用Python实现批量分割PDF文件》这篇文章主要为大家详细介绍了如何使用Python进行批量分割PDF文件功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、架构设计二、代码实现三、批量分割PDF文件四、总结本文将介绍如何使用python进js行批量分割PDF文件的方法

C#比较两个List集合内容是否相同的几种方法

《C#比较两个List集合内容是否相同的几种方法》本文详细介绍了在C#中比较两个List集合内容是否相同的方法,包括非自定义类和自定义类的元素比较,对于非自定义类,可以使用SequenceEqual、... 目录 一、非自定义类的元素比较1. 使用 SequenceEqual 方法(顺序和内容都相等)2.

使用Java实现获取客户端IP地址

《使用Java实现获取客户端IP地址》这篇文章主要为大家详细介绍了如何使用Java实现获取客户端IP地址,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 首先是获取 IP,直接上代码import org.springframework.web.context.request.Requ

使用Python实现PDF与SVG互转

《使用Python实现PDF与SVG互转》SVG(可缩放矢量图形)和PDF(便携式文档格式)是两种常见且广泛使用的文件格式,本文将详细介绍如何使用Python实现SVG和PDF之间的相互转... 目录使用工具使用python将SVG转换为PDF使用Python将SVG添加到现有PDF中使用Python将PD

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep