通過C#獲取PDF中指定文本或所有文本的字體信息
引言
在設計和出版行業(yè)中,字體的選擇和使用對最終作品的質量有著重要影響。然而,有時我們可能會遇到包含未知字體的PDF文件,這使得我們無法準確地復制或修改文檔。獲取PDF中的字體信息可以解決這個問題,讓我們能夠更好地處理這些文件。無論是用于重新設計、文檔翻譯還是個人學習,了解如何獲取PDF中的字體信息都是一項非常有用的技能。本文將介紹如何通過C#獲取PDF中指定文本或所有文本的字體信息。
獲取字體的操作需要用到第三方庫 Spire.PDF for .NET,我們可以通過以下鏈接下載產(chǎn)品包后手動添加引用,或者直接通過NuGet安裝。
點擊下載 Spire.PDF for.NET
C# 獲取PDF中指定文本的字體信息
通過使用Spire.PDF for .NET提供的 PdfTextFragment 類下的各屬性,我們可以獲取字體名稱、大小、樣式和顏色。主要實現(xiàn)步驟如下
- 加載 PDF 文件,然后獲取指定頁面。
- 通過
PdfTextFinder.Find()方法查找指定文本,并返回一個PdfTextFragment對象。 - 創(chuàng)建一個
StringBuilder實例來存儲信息。 - 遍歷所有查找到的文本
- 通過
PdfTextFragment.Text屬性獲取找到的文本內(nèi)容。 - 通過
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];
// 創(chuàng)建PdfTextFinder實例
PdfTextFinder finds = new PdfTextFinder(page);
// 查找頁面上指定文本
finds.Options.Parameter = TextFindParameter.None;
List<PdfTextFragment> result = finds.Find("南極洲");
// 創(chuàng)建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文檔中使用到的字體,它提供了不同的屬性來幫助我們獲取字體名稱、大小、類型和樣式等。主要實現(xiàn)步驟如下:
- 加載 PDF 文件。
- 通過
PdfDocument.UsedFonts屬性獲取 PDF 文件中使用的所有字體。 - 創(chuàng)建一個
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;
// 創(chuàng)建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文本信息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
c# for循環(huán)中創(chuàng)建線程執(zhí)行問題
這篇文章主要介紹了有關c# for循環(huán)中創(chuàng)建線程執(zhí)行問題,下面文章將將以舉例的方式展開for循環(huán)中創(chuàng)建線程執(zhí)行問題的內(nèi)容,需要的朋友可以參考一下,希望對你有所幫助2021-11-11

