在設計和出版行業中,字體的選擇和使用對最終作品的質量有著重要影響。然而,有時我們可能會遇到包含未知字體的PDF文件,這使得我們無法準確地復制或修改文檔。獲取PDF中的字體信息可以解決這個問題,讓我們能夠更好地處理這些文件。無論是用于重新設計、文檔翻譯還是個人學習,了解如何獲取PDF中的字體信息都是一項非常有用的技能。本文將介紹如何通過C#獲取PDF中指定文本或所有文本的字體信息。
文章目錄
- C# 獲取PDF中指定文本的字體信息
- C# 獲取PDF文檔中用到的所有字體信息
獲取字體的操作需要用到第三方庫 Spire.PDF for .NET,我們可以通過以下鏈接下載產品包后手動添加引用,或者直接通過NuGet安裝。
? 點擊下載 Spire.PDF for.NET
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());}}
}
