آموزش استخراج متن یا صفحه از فایل pdf در سی شارپ
در این متن قصد معرفی کتابخانه ای رایگان از سی شارپ رو دارم که میتونید باهاش با فایل های pdf کار هایی مثل
- تشخیص تعداد صفحات
- استخراج متن از یک فایل pdf
- جدا سازی یک یا چند صفحه از فایل
- استخراج اطلاعات فایل pdf
- و....
رو انجام بدید.
ما همه این کارهارو با کتابخانه ای با نام ItextSharp انجام میدیم
برای آغاز کار ابتدا نیاز دارید که این کتابخانه رو از nuget ویژوال نصب کنید پس وارد ناگت شده و به دنبال کتابخانه ITextSharp میگردیم
بعد از نصب نیاز دارین تا namespace های زیر رو به پروژه اضافه کنیم
using iTextSharp.text; using iTextSharp.text.pdf; using iTextSharp.text.pdf.parser;
در کد زیر ما قصد داریم تا چند صفحه از یک فایل pdf رو استخراج کنیم
var reader = new PdfReader(Application.StartupPath + "\\hypersource_article.pdf"); int intPageNum = reader.NumberOfPages; //210 pages reader.SelectPages(new int[] {15,25}); PdfStamper stamper = new PdfStamper(reader,new FileStream("j.pdf",FileMode.OpenOrCreate)); stamper.Close(); reader.Close();
بعد از معرفی مسیر فایل به کلاس PdfReader توسط متد SelectPages می توانیم صفحاتی را که قصد داریم استخراج کنیم را وارد می کنیم.
در صورتی که چند صفحه متفرقه لازم دارید بصورت یک ارایه عددی و در صورتی که یک سری یا یک رنجی از صفحات مد نظر است بصورت رشته => "22-52" یعنی از صفحه 22 الی 52 را استخراج کن.
سپس توسط یک PdfStamer اقدام به خروجی گرفتن فایل جدید میکنیم.
خواندن متن یک صفحه
در کد زیر نیز توسط متد GetTextFromPage از یک صفحه خاصی متن آن را خروجی میگیریم.
دقت کنید که خروجی متن برای مقالات فارسی استاندارد نیست و حروف استخراجی دارای ترتیب عکس هستند.
نکته 2 : در صورتی که قصد دارید تا از همه صفحات متن بگیرید مانند کد زیر عمل را داخل حلقه انجام دهید :
var reader = new PdfReader("hypersource_article.pdf"); int intPageNum = reader.NumberOfPages; for (int i = 1; i <= intPageNum; i++) { string text = PdfTextExtractor.GetTextFromPage(reader, i, new LocationTextExtractionStrategy()); File.WriteAllText($"page_{i}.txt", text); }