C# ค้นหาและแทนที่ข้อความใน PDF

ตัวเลือกการค้นหาและแทนที่ทำให้สามารถแทนที่ข้อความบางส่วนในเอกสารได้ในครั้งเดียว ด้วยวิธีนี้ คุณไม่จำเป็นต้องค้นหาและอัปเดตแต่ละรายการของข้อความในเอกสารทั้งหมดด้วยตนเอง บทความนี้ยังก้าวไปอีกขั้นและครอบคลุมถึงวิธีการทำให้คุณลักษณะค้นหาและแทนที่ข้อความในเอกสาร PDF เป็นไปโดยอัตโนมัติ โดยเฉพาะอย่างยิ่ง คุณจะได้เรียนรู้วิธีค้นหาและแทนที่ข้อความใน PDF ใน C# .NET เราจะสาธิตวิธีแทนที่ข้อความในหน้าใดหน้าหนึ่งหรือพื้นที่หน้าโดยใช้ C#..

C# .NET API เพื่อค้นหาและแทนที่ข้อความใน PDF - ดาวน์โหลดฟรี

Aspose.PDF for .NET เป็นไลบรารีคลาส C# ที่ให้คุณสมบัติการจัดการ PDF ขั้นพื้นฐานและขั้นสูงสำหรับแอปพลิเคชัน .NET API ยังช่วยให้คุณค้นหาและแทนที่ข้อความในไฟล์ PDF ด้วยวิธีต่างๆ ได้อย่างราบรื่น คุณสามารถ ดาวน์โหลด DLL ของ API หรือติดตั้งโดยใช้ NuGet

PM> Install-Package Aspose.PDF

ค้นหาและแทนที่ข้อความใน PDF โดยใช้ C#

ต่อไปนี้เป็นขั้นตอนในการค้นหาและแทนที่ข้อความในเอกสาร PDF

  • ใช้คลาส Document เพื่อโหลดเอกสาร PDF โดยใช้เส้นทาง
  • สร้างอินสแตนซ์ของคลาส TextFragmentAbsorber และระบุวลีค้นหาให้กับตัวสร้าง
  • ยอมรับตัวดูดซับข้อความสำหรับทุกหน้าของ PDF โดยใช้ Document.Pages.Accept(TextFragmentAbsorber)
  • รับส่วนข้อความที่แยกออกมาในวัตถุ TextFragmentCollection
  • วนซ้ำ TextFragmentCollection ที่พบและแทนที่ข้อความในแต่ละส่วน
  • บันทึกเอกสาร PDF ที่อัปเดตโดยใช้เมธอด Document.Save(String)

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีค้นหาและแทนที่ข้อความใน PDF โดยใช้ C#

// เปิดเอกสาร
Document pdfDocument = new Document("Document.pdf");

// สร้างวัตถุ TextAbsorber เพื่อค้นหาอินสแตนซ์ทั้งหมดของวลีค้นหาที่ป้อน
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("text");

// รับโช้คทุกหน้า
pdfDocument.Pages.Accept(textFragmentAbsorber);

// รับเศษข้อความที่แยกออกมา
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;

// วนรอบชิ้นส่วน
foreach (TextFragment textFragment in textFragmentCollection)
{
    // ปรับปรุงข้อความและคุณสมบัติอื่นๆ
    textFragment.Text = "TEXT";
    textFragment.TextState.Font = FontRepository.FindFont("Verdana");
    textFragment.TextState.FontSize = 22;
    textFragment.TextState.ForegroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Blue);
    textFragment.TextState.BackgroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Green);
}
            
// บันทึกเอกสาร PDF ที่เป็นผลลัพธ์
pdfDocument.Save("updated-document.pdf");

C# แทนที่ข้อความในหน้า PDF เฉพาะ

ต่อไปนี้เป็นขั้นตอนในการค้นหาและแทนที่ข้อความในหน้าเฉพาะในเอกสาร PDF

  • ใช้คลาส Document เพื่อโหลดเอกสาร PDF โดยใช้เส้นทาง
  • สร้างอินสแตนซ์ของคลาส TextFragmentAbsorber และระบุวลีค้นหาให้กับตัวสร้าง
  • ยอมรับตัวดูดซับข้อความสำหรับหน้าที่ต้องการโดยใช้ [Document.Pages1.Accept(TextFragmentAbsorber)]12
  • วนซ้ำคอลเลกชัน TextFragmentAbsorber.TextFragments ที่พบและแทนที่ข้อความในแต่ละส่วน
  • บันทึกเอกสาร PDF ที่อัปเดตโดยใช้เมธอด Document.Save(String)

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีค้นหาและแทนที่ข้อความในหน้าเฉพาะของ PDF โดยใช้ C#

// เปิดเอกสาร
Document pdfDocument = new Document("Document.pdf");

// สร้างวัตถุ TextAbsorber เพื่อค้นหาอินสแตนซ์ทั้งหมดของวลีค้นหาที่ป้อน
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("text");

// รับโช้คตามต้องการ
pdfDocument.Pages[1].Accept(textFragmentAbsorber);

// รับเศษข้อความที่แยกออกมา
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;

// วนรอบชิ้นส่วน
foreach (TextFragment textFragment in textFragmentCollection)
{
    // ปรับปรุงข้อความและคุณสมบัติอื่นๆ
    textFragment.Text = "TEXT";
    textFragment.TextState.Font = FontRepository.FindFont("Verdana");
    textFragment.TextState.FontSize = 22;
    textFragment.TextState.ForegroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Blue);
    textFragment.TextState.BackgroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Green);
}

// บันทึกเอกสาร PDF ที่เป็นผลลัพธ์
pdfDocument.Save("updated-document.pdf");

แทนที่ข้อความในภูมิภาคของหน้า PDF ใน C#

คุณยังสามารถค้นหาและแทนที่ข้อความในพื้นที่เฉพาะของหน้าในเอกสาร PDF ขั้นตอนต่อไปนี้แสดงวิธีกำหนดขอบเขตเฉพาะ จากนั้นแทนที่ข้อความภายในนั้น

  • ใช้คลาส Document เพื่อโหลดเอกสาร PDF โดยใช้เส้นทาง
  • สร้างอินสแตนซ์ของคลาส TextFragmentAbsorber และระบุวลีค้นหาให้กับตัวสร้าง
  • ยอมรับตัวดูดซับข้อความสำหรับหน้าที่ต้องการโดยใช้ Document.Pages[0].Accept(TextFragmentAbsorber)
  • กำหนดขอบเขตของหน้าโดยใช้คลาส Rectangle
  • วนรอบคอลเลกชัน TextFragmentAbsorber.TextFragments และแทนที่ข้อความในแต่ละส่วน
  • บันทึกเอกสาร PDF ที่อัปเดตโดยใช้เมธอด Document.Save(String)

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีค้นหาและแทนที่ข้อความในพื้นที่หน้าเฉพาะใน PDF โดยใช้ C#

// โหลดไฟล์ PDF
Document pdf = new Document("Document.pdf");

// ยกตัวอย่างวัตถุ TextFragment Absorber
TextFragmentAbsorber TextFragmentAbsorberAddress = new TextFragmentAbsorber();

// ค้นหาข้อความภายในหน้าที่ถูกผูกไว้
TextFragmentAbsorberAddress.TextSearchOptions.LimitToPageBounds = true;

// ระบุพื้นที่หน้าสำหรับ TextSearch Options
TextFragmentAbsorberAddress.TextSearchOptions.Rectangle = new Rectangle(100, 100, 200, 200);

// ค้นหาข้อความจากหน้าแรกของไฟล์ PDF
pdf.Pages[1].Accept(TextFragmentAbsorberAddress);

// วนซ้ำผ่าน TextFragment แต่ละรายการ
foreach (TextFragment tf in TextFragmentAbsorberAddress.TextFragments)
{
    // อัปเดตข้อความเป็นอักขระว่าง
    tf.Text = "";
}

// บันทึกไฟล์ PDF ที่อัปเดตหลังจากแทนที่ข้อความ
pdf.Save("output.pdf");

C# แทนที่ข้อความใน PDF ด้วย Regular Expression (Regex)

คุณยังสามารถใช้นิพจน์ทั่วไปเพื่อค้นหาและแทนที่ข้อความที่ตรงกับรูปแบบเฉพาะ สำหรับสิ่งนี้ คุณจะต้องระบุนิพจน์ทั่วไปแทนวลีค้นหาธรรมดา และใช้ TextSearchOptions ต่อไปนี้เป็นขั้นตอนในการทำเช่นนั้น

  • ใช้คลาส Document เพื่อโหลดเอกสาร PDF โดยใช้เส้นทาง
  • สร้างอินสแตนซ์ของคลาส TextFragmentAbsorber และระบุวลีค้นหาให้กับตัวสร้าง
  • สร้างอินสแตนซ์ของคลาส TextSearchOptions และส่งผ่านค่าจริงไปยังตัวสร้างเพื่อเปิดใช้งานการค้นหาตาม regex
  • กำหนดวัตถุ TextSearchOptions ให้กับคุณสมบัติ TextFragmentAbsorber.TextSearchOptions
  • ยอมรับตัวดูดซับข้อความสำหรับหน้าที่ต้องการโดยใช้ Document.Pages[0].Accept(TextFragmentAbsorber)
  • กำหนดขอบเขตของหน้าโดยใช้คลาส Rectangle
  • วนรอบคอลเลกชัน TextFragmentAbsorber.TextFragments และแทนที่ข้อความในแต่ละส่วน
  • บันทึกเอกสาร PDF ที่อัปเดตโดยใช้เมธอด Document.Save(String)

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีค้นหาและแทนที่ข้อความใน PDF โดยใช้นิพจน์ทั่วไปโดยใช้ C#

// เปิดเอกสาร
Document pdfDocument = new Document("Document.pdf");

// สร้างวัตถุ TextAbsorber เพื่อค้นหาวลีทั้งหมดที่ตรงกับนิพจน์ทั่วไป
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("\\d{4}-\\d{4}"); // Like 1999-2000

// ตั้งค่าตัวเลือกการค้นหาข้อความเพื่อระบุการใช้นิพจน์ทั่วไป
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;

// ยอมรับโช้คสำหรับหน้าเดียว
pdfDocument.Pages[1].Accept(textFragmentAbsorber);

// รับเศษข้อความที่แยกออกมา
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;

// วนรอบชิ้นส่วน
foreach (TextFragment textFragment in textFragmentCollection)
{
    // ปรับปรุงข้อความและคุณสมบัติอื่นๆ
    textFragment.Text = "New Phrase";
    // ตั้งค่าเป็นอินสแตนซ์ของวัตถุ
    textFragment.TextState.Font = FontRepository.FindFont("Verdana");
    textFragment.TextState.FontSize = 22;
    textFragment.TextState.ForegroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Blue);
    textFragment.TextState.BackgroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Green);
}

// บันทึก PDF
pdfDocument.Save("output.pdf");

บทสรุป

ปัจจุบันระบบอัตโนมัติของ PDF ถูกนำมาใช้อย่างแพร่หลายเพื่อจัดการเอกสาร PDF จากภายในเว็บหรือแอปพลิเคชันบนเดสก์ท็อป บทความนี้กล่าวถึงคุณลักษณะการทำงานอัตโนมัติของ PDF ที่มีประโยชน์ในการค้นหาและแทนที่ข้อความใน PDF ใน C# คำแนะนำทีละขั้นตอนและตัวอย่างโค้ดได้แสดงวิธีค้นหาและแทนที่ข้อความใน PDF ทั้งหมด หน้าใดหน้าหนึ่งใน PDF หรือพื้นที่หน้า คุณสามารถสำรวจคุณลักษณะขั้นสูงเพิ่มเติมได้โดยใช้ เอกสารประกอบ ของ API

ดูสิ่งนี้ด้วย