C# PDF 解析教學|使用 PdfPig 擷取文件內容(完整範例)|C# PDF 系列

更新 發佈閱讀 7 分鐘

在資料處理中,C# PDF 解析是一個常見需求,例如擷取文件內容或整理資料。本篇將使用 PdfPig 套件,帶你完成 PDF 內容擷取的完整教學,讓你快速掌握文件自動化處理技巧。

今天財務部同仁又有新需求跑來找我們,他們說當公司帳戶收到匯款時,銀行會提供PDF檔案(圖一),他們不想要一個一個檔案打開來看帳款金額,有沒有辦法用程式的方式讀取金額並且顯示出來?

(圖一)

vocus|新世代的創作平台


專案開發

語言:asp.net c#

應用程式: windows forms

1 . 建立專案

  • 打開Visual Studio 2022 建立一個asp.net c# windows forms專案,選Windows Forms App(.NET Framework),下一步後按建立。(圖一)

(圖一)

vocus|新世代的創作平台
  • 拉一個button在畫面上提供程式的進入點。(圖二)

(圖二)

vocus|新世代的創作平台
  • 對(圖二)button1點左鍵兩下,進入程式執行的區塊。(圖三)

(圖三)

vocus|新世代的創作平台

2 . 詢問ChatGPT

  • 語言、框架、功能需求清楚的表達給GPT如下:

asp.net c# windows form app(.Net FrameWork) 解析PDF裡的文字,並取得 金額: 後面的數字。 (GPT可以附圖,如果把PDF內容截圖貼上去,可以讓GPT更準確回答。)

  • 取得GPT給的範例,並把範例程式碼放到我們button1按下後會執行程式的區塊內,private void button1_Click(object sender, EventArgs e)的大括號{}裡面。

(請先用我查到的範例,後續有一定的基礎後可以自己使用GPT查出的範例,以免初學階段看不懂GPT的範例導致學習成效不彰)

private void button1_Click(object sender, EventArgs e)
{
string pdfPath = @"C:\MailAttachments\範例.pdf";

StringBuilder sb = new StringBuilder();

using (PdfDocument document = PdfDocument.Open(pdfPath))
{
foreach (UglyToad.PdfPig.Content.Page page in document.GetPages())
{
sb.Append(page.Text);
}
}

string text = sb.ToString();

Match m = Regex.Match(text, @"金\s*額\s*[::]\s*([0-9,\.]+)");

if (m.Success)
{
string amount = m.Groups[1].Value;
MessageBox.Show("金額 = " + amount);
}
else
{
MessageBox.Show("找不到金額");
}
}
  • PDFPig元件下載

當程式碼放到程式裡面你會發現 PdfDocument 底下反紅,這是因為我們沒有下載PDFPig這個內建的套件,所以編譯器就會顯示錯誤,告訴你它不知道這是什麼。(圖一)

(圖一)

vocus|新世代的創作平台

PDFPig是第三方套件,需要透過Nuget下載。

找到右方方案總管 → 對著專案按下右鍵 → 彈跳出來的選管理NuGet套件(N)...。(圖二)

(圖二)

vocus|新世代的創作平台

搜尋框打上 pdfpig→ 選PdfPig安裝(圖三)

(圖三)

vocus|新世代的創作平台

回到程式碼頁面。

之前我們都是教在程式碼最上方引用套件,今天我們要利用Visual Studio2022 厲害的功能。

滑鼠指到被反紅的程式碼PdfDocument → 出現一個像燈泡的東西,對著燈泡的下拉選項按下左鍵 → 彈出的下拉選單,我們選第一個 using UglyToad.PdfPig;(圖四)

這時候Visual Studio2022就會自動幫我們在最上面加上using UglyToad.PdfPig;。

現在的編譯器已經做到這麼方便,很厲害吧!

(圖四)

vocus|新世代的創作平台

這時候你會看到 foreach 跟 Text 底下還是反紅,這是因為 .ne t 跟 PdfPig 都有 Page型態的容器,所以編譯器不知道你要用誰的Page容器,因此會出錯。(圖五)

(圖五)

vocus|新世代的創作平台

GPT告訴我們要在程式碼最上面多引用 using UglyToad.PdfPig.Content; , 我們就直接複製貼上程式碼最上面。

引用後會只剩下反紅的程式碼Page。

滑鼠指到被反紅的程式碼Page → 出現一個像燈泡的東西,對著燈泡的下拉選項按下左鍵 → 彈出的下拉選單,我們選第二個UglyToad.PdfPig.Content.Page;(圖六)

這樣一來錯誤訊息就沒了。

為什麼 Page 要改成 UglyToad.PdfPig.Content.Page ? 其實,就是我上一段說的,編譯器不知道你是要用.net 內建的Page容器,還是PdfPig的Page容器。所以我們就明確的告訴編譯器我們要用PdfPig的Page容器。

(圖六)

vocus|新世代的創作平台

3 . 測試效果

開始前要在 "C:\MailAttachments\範例.pdf" 放一個範例PDF檔才有辦法正常運作喔!

(圖一)

vocus|新世代的創作平台

內容則是自己隨便創作即可,記得要有 金額: ,程式才能抓出後方的數字喔!(圖二)

(圖二)

vocus|新世代的創作平台

直接開始程式並且按下button 1,就會成功的跳出金額瞜!(圖三)

(圖三)

vocus|新世代的創作平台

結論

這篇的程式碼偏短,而且你會發現範例程式碼已經可以達成財務部提出的需求,基本上不用改動,只需要去了解一下程式的運作即可。

順便分享一下,在職場上資訊部有時候需求比較趕,老闆沒時間等待,我們有可能就會做出一個範例版本或是基礎版就直接上線,之後才回過頭來了解程式碼或做適當的微調。

下一篇我們會來研究範例程式碼的細節。



留言
avatar-img
ITT Fun
0會員
15內容數
主要內容會教大家如何快速有效轉職到中大型公司內部系統的軟體工程師。 程式真的沒有很困難,不論之前覺得學習太枯燥乏味或是其他因素而放棄或從未開始,這邊會帶給大家不同的體驗。 我們會用實際案例來當作教學主軸,用我親身的經歷讓大家快樂學習程式,過程中可以累積很多程式作品還會提升很多成就感,同時還能增加成功轉職的機會!
ITT Fun的其他內容
2026/04/09
在了解基本操作後,本篇將進一步解析 C# Outlook 自動化範例,詳細說明郵件讀取的程式碼與邏輯流程,讓你可以依需求修改與擴充,打造屬於自己的 Email 自動化工具。 https://vocus.cc/article/69250a02fd89780001bff712
Thumbnail
2026/04/09
在了解基本操作後,本篇將進一步解析 C# Outlook 自動化範例,詳細說明郵件讀取的程式碼與邏輯流程,讓你可以依需求修改與擴充,打造屬於自己的 Email 自動化工具。 https://vocus.cc/article/69250a02fd89780001bff712
Thumbnail
2026/04/07
使用 C# 讀取 Outlook 郵件,可以實現許多自動化流程,例如自動下載附件或整理信件。本篇將帶你完成 Outlook 郵件讀取教學,並實作 Email 自動化流程,讓你減少重複性工作,提高工作效率。
Thumbnail
2026/04/07
使用 C# 讀取 Outlook 郵件,可以實現許多自動化流程,例如自動下載附件或整理信件。本篇將帶你完成 Outlook 郵件讀取教學,並實作 Email 自動化流程,讓你減少重複性工作,提高工作效率。
Thumbnail
2026/04/02
當資料不同時,C# Excel 程式的結構與邏輯就會非常重要。本篇將分享 C# Excel 資料處理優化的技巧,包含邏輯設計與程式結構改善,幫助你從「能用」進階到「符合客製化需求」。
Thumbnail
2026/04/02
當資料不同時,C# Excel 程式的結構與邏輯就會非常重要。本篇將分享 C# Excel 資料處理優化的技巧,包含邏輯設計與程式結構改善,幫助你從「能用」進階到「符合客製化需求」。
Thumbnail
看更多
你可能也想看
Thumbnail
前言:重新定義「被取代」的真正意涵 當我們談論 AI 將在 2030 年「取代」軟體工程師時,這個論述往往過於簡化了一個複雜的轉型過程。真正的問題不是 AI 是否會取代程式設計師,而是哪些工程師會被淘汰,哪些會成為下一代的技術領導者。 歷史告訴我們,每一次技術革命都會重新定義職業的本質,而非簡單
Thumbnail
前言:重新定義「被取代」的真正意涵 當我們談論 AI 將在 2030 年「取代」軟體工程師時,這個論述往往過於簡化了一個複雜的轉型過程。真正的問題不是 AI 是否會取代程式設計師,而是哪些工程師會被淘汰,哪些會成為下一代的技術領導者。 歷史告訴我們,每一次技術革命都會重新定義職業的本質,而非簡單
Thumbnail
若說易卜生的《玩偶之家》為 19 世紀的女性,開啟了一扇離家的窄門,那麼《海妲.蓋柏樂》展現的便是門後的窒息世界。本篇文章由劇場演員 Amily 執筆,同為熟稔文本的演員,亦是深刻體察制度縫隙的當代女性,此文所看見的不僅僅是崩壞前夕的最後發聲,更是女人被迫置於冷酷的制度之下,步步陷入無以言說的困境。
Thumbnail
若說易卜生的《玩偶之家》為 19 世紀的女性,開啟了一扇離家的窄門,那麼《海妲.蓋柏樂》展現的便是門後的窒息世界。本篇文章由劇場演員 Amily 執筆,同為熟稔文本的演員,亦是深刻體察制度縫隙的當代女性,此文所看見的不僅僅是崩壞前夕的最後發聲,更是女人被迫置於冷酷的制度之下,步步陷入無以言說的困境。
Thumbnail
本文深度解析賽勒布倫尼科夫的舞臺作品《傳奇:帕拉贊諾夫的十段殘篇》,如何以十段殘篇,結合帕拉贊諾夫的電影美學、象徵意象與當代政治流亡抗爭,探討藝術在儀式消失的現代社會如何承接意義,並展現不羈的自由靈魂。
Thumbnail
本文深度解析賽勒布倫尼科夫的舞臺作品《傳奇:帕拉贊諾夫的十段殘篇》,如何以十段殘篇,結合帕拉贊諾夫的電影美學、象徵意象與當代政治流亡抗爭,探討藝術在儀式消失的現代社會如何承接意義,並展現不羈的自由靈魂。
Thumbnail
網路上提到自學程式的文章,都會說自學程式非常地辛苦,而且要很自律,決心夠強;而當自己踏上這條路後,才發現何止是辛苦,根本是佈滿荊棘,常常寸步難行,且被刺地遍體鱗傷(喂~是不是有點太浮誇了),但在每個寫出程式豁然開朗的當下,卻又成就感滿滿,所以想藉著寫部落格紀錄一下自己的學習過程!
Thumbnail
網路上提到自學程式的文章,都會說自學程式非常地辛苦,而且要很自律,決心夠強;而當自己踏上這條路後,才發現何止是辛苦,根本是佈滿荊棘,常常寸步難行,且被刺地遍體鱗傷(喂~是不是有點太浮誇了),但在每個寫出程式豁然開朗的當下,卻又成就感滿滿,所以想藉著寫部落格紀錄一下自己的學習過程!
Thumbnail
全新版本的《三便士歌劇》如何不落入「復刻經典」的巢臼,反而利用華麗的秀場視覺,引導觀眾在晚期資本主義的消費愉悅之中,而能驚覺「批判」本身亦可能被收編——而當絞繩升起,這場關於如何生存的黑色遊戲,又將帶領新時代的我們走向何種後現代的自我解構?
Thumbnail
全新版本的《三便士歌劇》如何不落入「復刻經典」的巢臼,反而利用華麗的秀場視覺,引導觀眾在晚期資本主義的消費愉悅之中,而能驚覺「批判」本身亦可能被收編——而當絞繩升起,這場關於如何生存的黑色遊戲,又將帶領新時代的我們走向何種後現代的自我解構?
Thumbnail
要轉換到另一個領域,需要投入相當的時間,一旦準備的時間拉得越長,轉職要面臨的壓力也就可能隨之增加。 這次就將 Podcast 先前邀請到多位軟體工程師分享的轉職經驗彙整成整理包,讓大家可以更快找到自己需要的轉職資訊,把更多時間留在提升專業技能上!
Thumbnail
要轉換到另一個領域,需要投入相當的時間,一旦準備的時間拉得越長,轉職要面臨的壓力也就可能隨之增加。 這次就將 Podcast 先前邀請到多位軟體工程師分享的轉職經驗彙整成整理包,讓大家可以更快找到自己需要的轉職資訊,把更多時間留在提升專業技能上!
Thumbnail
長期以來,西方美學以《維特魯威人》式的幾何比例定義「完美身體」,這種視覺標準無形中成為殖民擴張與種族分類的暴力工具。本文透過分析奈及利亞編舞家庫德斯.奧尼奎庫的舞作《轉轉生》,探討當代非洲舞蹈如何跳脫「標本式」的文化觀看。
Thumbnail
長期以來,西方美學以《維特魯威人》式的幾何比例定義「完美身體」,這種視覺標準無形中成為殖民擴張與種族分類的暴力工具。本文透過分析奈及利亞編舞家庫德斯.奧尼奎庫的舞作《轉轉生》,探討當代非洲舞蹈如何跳脫「標本式」的文化觀看。
Thumbnail
曾經因為工作上的衝突,體驗到被甲方的語言攻擊與情緒勒索的不適,引發我思索如何改變現況。朋友的建議點燃了我嘗試轉職的火苗:成為具有專業技能且不受他人左右的自己。由於在資訊服務產業從事PM工作,自然聯想到專注於程式碼的工程師,他們在工作上相對具有專業技能,更不受甲方干擾。
Thumbnail
曾經因為工作上的衝突,體驗到被甲方的語言攻擊與情緒勒索的不適,引發我思索如何改變現況。朋友的建議點燃了我嘗試轉職的火苗:成為具有專業技能且不受他人左右的自己。由於在資訊服務產業從事PM工作,自然聯想到專注於程式碼的工程師,他們在工作上相對具有專業技能,更不受甲方干擾。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News