ค้นหานิพจน์ทั่วไปในไฟล์ PDF
การแนะนำ
เมื่อต้องจัดการกับเอกสาร PDF ขนาดใหญ่ คุณอาจพบว่าตัวเองต้องค้นหารูปแบบหรือรูปแบบเฉพาะ เช่น วันที่ หมายเลขโทรศัพท์ หรือข้อมูลที่มีโครงสร้างอื่นๆ การตรวจสอบ PDF ด้วยตนเองอาจเป็นเรื่องที่น่าเบื่อใช่หรือไม่ นี่คือจุดที่การใช้นิพจน์ทั่วไป (regex) มีประโยชน์ ในบทช่วยสอนนี้ เราจะมาสำรวจวิธีค้นหารูปแบบนิพจน์ทั่วไปภายในไฟล์ PDF โดยใช้ Aspose.PDF สำหรับ .NET คู่มือนี้จะแนะนำคุณในแต่ละขั้นตอนเพื่อให้คุณนำไปใช้งานในแอปพลิเคชัน .NET ได้อย่างง่ายดาย
ข้อกำหนดเบื้องต้น
ก่อนที่เราจะเจาะลึกในบทช่วยสอนทีละขั้นตอน มาดูสิ่งที่คุณต้องมีกันก่อน:
- Aspose.PDF สำหรับ .NET: คุณต้องติดตั้งไลบรารีนี้ก่อน หากคุณยังไม่ได้ติดตั้ง คุณสามารถดาวน์โหลดได้ที่นี่.
- IDE: Visual Studio หรือ IDE อื่น ๆ ที่เข้ากันได้กับ C#
- .NET Framework: ตรวจสอบให้แน่ใจว่าโครงการของคุณได้รับการตั้งค่าด้วย .NET Framework เวอร์ชันที่เหมาะสม
- ความรู้พื้นฐานเกี่ยวกับ C#: แม้ว่าคู่มือนี้จะมีรายละเอียด แต่การมีความเข้าใจพื้นฐานเกี่ยวกับ C# จะเป็นประโยชน์
แพ็คเกจนำเข้า
ในการเริ่มต้น คุณจะต้องนำเข้าเนมสเปซที่จำเป็นจาก Aspose.PDF สำหรับ .NET เข้าสู่โปรเจ็กต์ของคุณ แพ็คเกจเหล่านี้มีความจำเป็นสำหรับการทำงานกับ PDF และการดำเนินการค้นหาโดยใช้ regex
using Aspose.Pdf;
using Aspose.Pdf.Text;
using System;
มาแบ่งขั้นตอนการค้นหานิพจน์ทั่วไปในไฟล์ PDF โดยใช้ Aspose.PDF ออกเป็นหลายขั้นตอน
ขั้นตอนที่ 1: ตั้งค่าไดเรกทอรีเอกสาร
การดำเนินการ PDF ทุกครั้งเริ่มต้นด้วยการระบุตำแหน่งที่ตั้งของเอกสารของคุณ คุณจะต้องกำหนดเส้นทางไปยังไฟล์ PDF ของคุณ ซึ่งจะถูกเก็บไว้ในdataDir
ตัวแปร.
ขั้นตอนที่ 1.1: กำหนดเส้นทางเอกสารของคุณ
// กำหนดเส้นทางไปยังเอกสาร PDF ของคุณ
string dataDir = "YOUR DOCUMENT DIRECTORY";
แทนที่"YOUR DOCUMENT DIRECTORY"
ด้วยเส้นทางจริงไปยังไฟล์ PDF ของคุณ ขั้นตอนนี้มีความสำคัญเนื่องจากจะชี้โค้ดของคุณไปยังไฟล์ที่คุณต้องการใช้งาน
ขั้นตอนที่ 1.2: เปิดเอกสาร PDF
ขั้นต่อไปคุณต้องเปิดเอกสาร PDF โดยใช้Document
คลาสจาก Aspose.PDF
// เปิดเอกสาร
Document pdfDocument = new Document(dataDir + "SearchRegularExpressionAll.pdf");
ที่นี่,"SearchRegularExpressionAll.pdf"
เป็นไฟล์ PDF ตัวอย่างที่เราจะใช้ค้นหา regex
ขั้นตอนที่ 2: ตั้งค่า TextFragmentAbsorber
ที่นี่คือจุดที่เวทมนตร์เกิดขึ้น!TextFragmentAbsorber
คลาสช่วยในการจับส่วนของข้อความที่ตรงกับรูปแบบเฉพาะหรือนิพจน์ทั่วไป
มาตั้งค่าตัวดูดซับเพื่อค้นหารูปแบบโดยใช้ regex กัน ในกรณีนี้ เราจะค้นหารูปแบบของปี เช่น “1999-2000”
// สร้างวัตถุ TextAbsorber เพื่อค้นหาวลีทั้งหมดที่ตรงกับนิพจน์ทั่วไป
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("\\d{4}-\\d{4}"); // ประมาณปี 1999-2000
นิพจน์ปกติ\\d{4}-\\d{4}
ค้นหารูปแบบตัวเลขสี่หลักตามด้วยเครื่องหมายขีดกลางและตัวเลขอีกสี่หลัก ซึ่งถือเป็นลักษณะทั่วไปของช่วงปี
ขั้นตอนที่ 3: เปิดใช้งานการค้นหาด้วยนิพจน์ทั่วไป
เพื่อให้แน่ใจว่าการดำเนินการค้นหาตีความรูปแบบเป็นนิพจน์ทั่วไป คุณจำเป็นต้องกำหนดค่าตัวเลือกการค้นหาโดยใช้TextSearchOptions
ระดับ.
// ตั้งค่าตัวเลือกการค้นหาข้อความเพื่อระบุการใช้งานนิพจน์ปกติ
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;
การตั้งค่าTextSearchOptions
ถึงtrue
ช่วยให้แน่ใจว่าตัวดูดซับจะใช้การค้นหาตามนิพจน์ปกติแทนข้อความธรรมดา
ขั้นตอนที่ 4: ยอมรับ Text Absorber
ในขั้นตอนนี้ คุณจะใช้ตัวดูดซับข้อความกับเอกสาร PDF เพื่อให้สามารถดำเนินการค้นหาได้ ซึ่งทำได้โดยการเรียกใช้Accept
วิธีการบนPages
วัตถุของเอกสาร PDF
// รับตัวดูดซับทุกหน้า
pdfDocument.Pages.Accept(textFragmentAbsorber);
คำสั่งนี้จะประมวลผลหน้าทั้งหมดของ PDF โดยค้นหาข้อความใดๆ ที่ตรงกับนิพจน์ทั่วไป
ขั้นตอนที่ 5: ดึงข้อมูลและแสดงผลลัพธ์
หลังจากการค้นหาเสร็จสิ้น คุณต้องดึงผลลัพธ์ออกมาTextFragmentAbsorber
เก็บผลลัพธ์เหล่านี้ไว้ในTextFragmentCollection
คุณสามารถวนซ้ำผ่านคอลเลกชันนี้เพื่อเข้าถึงและแสดงข้อความที่ตรงกันแต่ละส่วน
ขั้นตอนที่ 5.1: ดึงข้อมูลส่วนที่แยกออกมา
// รับชิ้นส่วนข้อความที่แยกออกมา
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;
ตอนนี้คุณได้รวบรวมชิ้นส่วนต่างๆ แล้ว ถึงเวลาที่จะวนซ้ำและแสดงรายละเอียดที่เกี่ยวข้อง เช่น ข้อความ ตำแหน่ง รายละเอียดแบบอักษร และอื่นๆ
ขั้นตอนที่ 5.2: วนซ้ำผ่านเศษส่วน
// วนผ่านชิ้นส่วน
foreach (TextFragment textFragment in textFragmentCollection)
{
Console.WriteLine("Text : {0} ", textFragment.Text);
Console.WriteLine("Position : {0} ", textFragment.Position);
Console.WriteLine("XIndent : {0} ", textFragment.Position.XIndent);
Console.WriteLine("YIndent : {0} ", textFragment.Position.YIndent);
Console.WriteLine("Font - Name : {0}", textFragment.TextState.Font.FontName);
Console.WriteLine("Font - IsAccessible : {0} ", textFragment.TextState.Font.IsAccessible);
Console.WriteLine("Font - IsEmbedded : {0} ", textFragment.TextState.Font.IsEmbedded);
Console.WriteLine("Font - IsSubset : {0} ", textFragment.TextState.Font.IsSubset);
Console.WriteLine("Font Size : {0} ", textFragment.TextState.FontSize);
Console.WriteLine("Foreground Color : {0} ", textFragment.TextState.ForegroundColor);
}
สำหรับแต่ละTextFragment
รายละเอียดต่างๆ เช่น ขนาดตัวอักษร ชื่อตัวอักษร และตำแหน่งจะถูกพิมพ์ออกมา ซึ่งไม่เพียงแต่ช่วยในการค้นหาข้อความเท่านั้น แต่ยังช่วยให้คุณระบุรูปแบบและตำแหน่งที่แน่นอนของข้อความได้อีกด้วย
บทสรุป
นั่นแหละ! การค้นหารูปแบบในไฟล์ PDF โดยใช้นิพจน์ทั่วไปนั้นมีประสิทธิภาพอย่างยิ่ง โดยเฉพาะอย่างยิ่งสำหรับข้อความที่มีโครงสร้าง เช่น วันที่ หมายเลขโทรศัพท์ และรูปแบบที่คล้ายกัน Aspose.PDF สำหรับ .NET มอบวิธีการที่ราบรื่นในการดำเนินการดังกล่าวได้อย่างง่ายดาย ตอนนี้คุณสามารถใช้ประโยชน์จากพลังของนิพจน์ทั่วไปในการค้นหาข้อความ PDF โดยอัตโนมัติ ทำให้เวิร์กโฟลว์ของคุณมีประสิทธิภาพมากขึ้น
คำถามที่พบบ่อย
ฉันสามารถค้นหารูปแบบต่างๆ ใน PDF เดียวได้ไหม
ใช่ คุณสามารถรันได้หลาย ๆTextFragmentAbsorber
วัตถุแต่ละชิ้นมีรูปแบบ regex ที่แตกต่างกันใน PDF เดียวกัน
Aspose.PDF รองรับการค้นหารูปแบบที่ไม่คำนึงถึงตัวพิมพ์ใหญ่หรือเล็กหรือไม่
แน่นอน! คุณสามารถกำหนดค่าได้TextSearchOptions
เพื่อให้การค้นหาไม่คำนึงถึงตัวพิมพ์เล็ก/ใหญ่
มีข้อจำกัดเกี่ยวกับขนาดของ PDF ที่ฉันค้นหาได้หรือไม่
ไม่มีข้อจำกัดที่เข้มงวด แต่ประสิทธิภาพอาจแตกต่างกันไปขึ้นอยู่กับขนาดของ PDF และความซับซ้อนของรูปแบบ regex
ฉันสามารถเน้นข้อความที่พบใน PDF ได้หรือไม่
ใช่ Aspose.PDF ช่วยให้คุณเน้นข้อความหรือแม้แต่แทนที่ข้อความได้ เมื่อพบโดยใช้ตัวดูดซับ
ฉันจะจัดการข้อผิดพลาดอย่างไรหากไม่พบรูปแบบ?
หากไม่พบการจับคู่TextFragmentCollection
จะว่างเปล่า คุณสามารถจัดการสถานการณ์นี้ด้วยการตรวจสอบง่ายๆ ก่อนที่จะวนซ้ำผ่านผลลัพธ์