通過C#獲取PDF中指定文本或所有文本的字體信息
引言
在設(shè)計(jì)和出版行業(yè)中,字體的選擇和使用對(duì)最終作品的質(zhì)量有著重要影響。然而,有時(shí)我們可能會(huì)遇到包含未知字體的PDF文件,這使得我們無法準(zhǔn)確地復(fù)制或修改文檔。獲取PDF中的字體信息可以解決這個(gè)問題,讓我們能夠更好地處理這些文件。無論是用于重新設(shè)計(jì)、文檔翻譯還是個(gè)人學(xué)習(xí),了解如何獲取PDF中的字體信息都是一項(xiàng)非常有用的技能。本文將介紹如何通過C#獲取PDF中指定文本或所有文本的字體信息。
獲取字體的操作需要用到第三方庫(kù) Spire.PDF for .NET,我們可以通過以下鏈接下載產(chǎn)品包后手動(dòng)添加引用,或者直接通過NuGet安裝。
點(diǎn)擊下載 Spire.PDF for.NET
C# 獲取PDF中指定文本的字體信息
通過使用Spire.PDF for .NET提供的 PdfTextFragment
類下的各屬性,我們可以獲取字體名稱、大小、樣式和顏色。主要實(shí)現(xiàn)步驟如下
- 加載 PDF 文件,然后獲取指定頁(yè)面。
- 通過
PdfTextFinder.Find()
方法查找指定文本,并返回一個(gè)PdfTextFragment
對(duì)象。 - 創(chuàng)建一個(gè)
StringBuilder
實(shí)例來存儲(chǔ)信息。 - 遍歷所有查找到的文本
- 通過
PdfTextFragment.Text
屬性獲取找到的文本內(nèi)容。 - 通過
PdfTextFragment.TextStates[0].FontName
屬性獲取找到的文本的字體名稱。 - 通過
PdfTextFragment.TextStates[0].FontSize
屬性獲取找到的文本的字體大小。 - 通過
PdfTextFragment.TextStates[0].FontFamily
屬性獲取找到的文本的字體類型。 - 通過
PdfTextFragment.TextStates[0].IsBold
和PdfTextFragment.TextStates[0].IsSimulateBold
屬性指示字體是否加粗或模擬加粗(字體樣式設(shè)置為填充和描邊)。 - 通過
PdfTextFragment.TextStates[0].IsItalic
屬性指示字體是否為斜體. - 使用
PdfTextFragment.TextStates[0].ForegroundColor
屬性獲取找到的文本的字體顏色。 - 將獲取到的字體信息添加到
StringBuilder
實(shí)例中,然后寫入 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"); // 獲取第一頁(yè) PdfPageBase page = pdf.Pages[0]; // 創(chuàng)建PdfTextFinder實(shí)例 PdfTextFinder finds = new PdfTextFinder(page); // 查找頁(yè)面上指定文本 finds.Options.Parameter = TextFindParameter.None; List<PdfTextFragment> result = finds.Find("南極洲"); // 創(chuàng)建StringBuilder實(shí)例 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實(shí)例中 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(" "); } // 寫入一個(gè)txt文件 File.WriteAllText("Pdf字體.txt", str.ToString()); } } }
C# 獲取PDF文檔中用到的所有字體信息
PdfUsedFont
類表示PDF文檔中使用到的字體,它提供了不同的屬性來幫助我們獲取字體名稱、大小、類型和樣式等。主要實(shí)現(xiàn)步驟如下:
- 加載 PDF 文件。
- 通過
PdfDocument.UsedFonts
屬性獲取 PDF 文件中使用的所有字體。 - 創(chuàng)建一個(gè)
StringBuilder
實(shí)例來存儲(chǔ)信息。 - 遍歷所有使用到的字體。
- 通過
PdfUsedFont.Name
屬性獲取字體名稱。 - 通過
PdfUsedFont.Size
屬性獲取字體大小。 - 通過
PdfUsedFont.Type
屬性獲取字體類型。 - 通過
PdfUsedFont.Style
屬性獲取字體樣式。 - 將獲取到的字體信息添加到
StringBuilder
實(shí)例中,然后寫入 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; // 創(chuàng)建StringBuilder實(shí)例 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實(shí)例中 str.AppendLine("字體名稱: " + name + " 字體大?。?" + size + " 字體類型: " + type + " 字體樣式: " + style); } // 寫入一個(gè)txt文件 File.WriteAllText("Pdf字體信息.txt", str.ToString()); } } }
到此這篇關(guān)于通過C#獲取PDF中指定文本或所有文本的字體信息的文章就介紹到這了,更多相關(guān)C#獲取PDF文本信息內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C# 前端無插件打印導(dǎo)出實(shí)現(xiàn)方式詳解
本文講述了使用C#實(shí)現(xiàn)前端無插件的打印和導(dǎo)出功能,介紹了相關(guān)技術(shù)和方法,適合需要在項(xiàng)目中實(shí)現(xiàn)相應(yīng)功能的開發(fā)者參考2024-10-10c# for循環(huán)中創(chuàng)建線程執(zhí)行問題
這篇文章主要介紹了有關(guān)c# for循環(huán)中創(chuàng)建線程執(zhí)行問題,下面文章將將以舉例的方式展開for循環(huán)中創(chuàng)建線程執(zhí)行問題的內(nèi)容,需要的朋友可以參考一下,希望對(duì)你有所幫助2021-11-11C#?將Excel轉(zhuǎn)為PDF時(shí)自定義表格紙張大小的代碼思路
這篇文章主要介紹了C#?將Excel轉(zhuǎn)為PDF時(shí)自定義表格紙張大小的代碼思路,轉(zhuǎn)換前的頁(yè)面大小設(shè)置為該版本中寫入的新功能,在舊版本和免費(fèi)版本中暫不支持,感興趣的朋友跟隨小編一起看看實(shí)例代碼2021-11-11