PDF เป็นรูปแบบยอดนิยมที่ใช้กันอย่างแพร่หลายในการแชร์เอกสารระหว่างองค์กรและบุคคล อาจมีสถานการณ์ที่คุณต้องค้นหาและแทนที่ข้อความบางส่วนในเอกสาร PDF ก่อนแบ่งปัน คุณสามารถทำได้ด้วยตนเอง แต่จะใช้เวลามากขึ้นและมีประสิทธิภาพน้อยลง ตัวเลือกที่ดีกว่าและเร็วกว่าคือทำสิ่งนี้โดยทางโปรแกรม ในบทความนี้ คุณจะได้เรียนรู้วิธีค้นหาและแทนที่ข้อความในไฟล์ PDF โดยใช้ C++
- C ++ API เพื่อค้นหาและแทนที่ข้อความในไฟล์ PDF
- ค้นหาและแทนที่ข้อความใน PDF โดยใช้ C++
- C++ ค้นหาและแทนที่ข้อความในหน้า PDF เฉพาะ
- แทนที่ข้อความในขอบเขตของหน้า PDF โดยใช้ C++
- ค้นหาและแทนที่ข้อความในไฟล์ PDF โดยใช้ Regular Expressions
- รับใบอนุญาตฟรี
C ++ API เพื่อค้นหาและแทนที่ข้อความในไฟล์ PDF
Aspose.PDF for C++ เป็นไลบรารี C++ สำหรับทำงานกับไฟล์ PDF มันมีคุณสมบัติมากมายที่ช่วยให้คุณทำงานด้านต่าง ๆ ของเวิร์กโฟลว์ PDF ของคุณโดยอัตโนมัติ คุณลักษณะอย่างหนึ่งคือการค้นหาและแทนที่ข้อความในไฟล์ PDF คุณสามารถติดตั้ง API ผ่าน NuGet หรือดาวน์โหลดโดยตรงจากส่วน ดาวน์โหลด
PM> Install-Package Aspose.PDF.Cpp
ค้นหาและแทนที่ข้อความใน PDF โดยใช้ C++
Aspose.PDF for C++ มีคลาส TextFragmentAbsorber สำหรับค้นหาข้อความในเอกสาร PDF คุณเริ่มต้นคลาสนี้ด้วยข้อความที่คุณต้องการค้นหาและใช้เพื่อดึงส่วนข้อความที่ตรงกันทั้งหมด เมื่อมีแฟรกเมนต์ทั้งหมดแล้ว ให้วนซ้ำและแทนที่ข้อความ ต่อไปนี้เป็นขั้นตอนในการค้นหาและแทนที่ข้อความในไฟล์ PDF โดยใช้ C++
- โหลดไฟล์ PDF โดยใช้คลาส Document
- สร้างอินสแตนซ์ของคลาส TextFragmentAbsorber และเริ่มต้นด้วยข้อความที่คุณต้องการค้นหาในไฟล์ PDF
- ยอมรับ TextFragmentAbsorber สำหรับหน้าโดยใช้ Document->getPages()->Accept (System::SharedPtrText::TextFragmentAbsorber ผู้เยี่ยมชม) วิธีการ
- ดึงข้อความทั้งหมดที่เกิดขึ้นโดยใช้เมธอด TextFragmentAbsorber->getTextFragments()
- วนซ้ำ TextFragmentCollection และอัปเดตข้อความโดยใช้เมธอด TextFragment->setText (System::String value)
- บันทึกไฟล์ PDF ที่อัปเดตโดยใช้เมธอด Document->Save (System::String outputFileName)
ต่อไปนี้คือโค้ดตัวอย่างสำหรับค้นหาและแทนที่ข้อความในไฟล์ PDF ทั้งหมดโดยใช้ C++
// โหลดไฟล์ PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");
// สร้างวัตถุ TextAbsorber เพื่อค้นหาอินสแตนซ์ทั้งหมดของวลีค้นหาที่ป้อน
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");
// รับโช้คทุกหน้า
pdfDocument->get_Pages()->Accept(textFragmentAbsorber);
// รับเศษข้อความที่แยกออกมา
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();
// วนรอบชิ้นส่วน
for (auto textFragment : textFragmentCollection)
{
// ปรับปรุงข้อความและคุณสมบัติอื่นๆ
textFragment->set_Text(u"UPDATED TEXT");
textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
textFragment->get_TextState()->set_FontSize(22);
}
// บันทึกเอกสาร PDF ที่ได้
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");
C++ ค้นหาและแทนที่ข้อความในหน้า PDF เฉพาะ
อาจมีสถานการณ์ที่คุณต้องการค้นหาและแทนที่ข้อความในหน้าใดหน้าหนึ่งเท่านั้น แทนที่จะต้องการค้นหาทั้งเอกสาร สำหรับสิ่งนี้ ให้ยอมรับวัตถุ TextFragmentAbsorber สำหรับหน้าที่คุณต้องการแทนที่ข้อความ ต่อไปนี้เป็นขั้นตอนในการค้นหาและแทนที่ข้อความในหน้าเฉพาะในเอกสาร PDF
- โหลดไฟล์ PDF โดยใช้คลาส Document
- สร้างอินสแตนซ์ของคลาส TextFragmentAbsorber และเริ่มต้นด้วยข้อความที่คุณต้องการค้นหาในไฟล์ PDF
- ยอมรับ TextFragmentAbsorber สำหรับหน้าเฉพาะโดยใช้ Document->getPages()->idxget (int32t index)->Accept (System::SharedPtrText::TextFragmentAbsorber ผู้เยี่ยมชม) วิธีการ
- ดึงข้อความทั้งหมดที่เกิดขึ้นโดยใช้เมธอด TextFragmentAbsorber->getTextFragments()
- วนซ้ำ TextFragmentCollection และอัปเดตข้อความโดยใช้เมธอด TextFragment->setText (System::String value)
- บันทึกไฟล์ PDF ที่อัปเดตโดยใช้เมธอด Document->Save (System::String outputFileName)
ต่อไปนี้คือโค้ดตัวอย่างสำหรับค้นหาและแทนที่ข้อความในหน้า PDF ที่ต้องการโดยใช้ C++
// โหลดไฟล์ PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");
// สร้างวัตถุ TextAbsorber เพื่อค้นหาอินสแตนซ์ทั้งหมดของวลีค้นหาที่ป้อน
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");
// ยอมรับตัวดูดซับสำหรับหน้าที่สองของเอกสาร
pdfDocument->get_Pages()->idx_get(2)->Accept(textFragmentAbsorber);
// รับเศษข้อความที่แยกออกมา
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();
// วนรอบชิ้นส่วน
for (auto textFragment : textFragmentCollection)
{
// ปรับปรุงข้อความและคุณสมบัติอื่นๆ
textFragment->set_Text(u"UPDATED TEXT");
textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
textFragment->get_TextState()->set_FontSize(22);
}
// บันทึกเอกสาร PDF ที่เป็นผลลัพธ์
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument2.pdf");
แทนที่ข้อความในขอบเขตของหน้า PDF โดยใช้ C++
แทนที่จะค้นหาทั้งหน้า คุณสามารถระบุพื้นที่ของหน้าที่คุณต้องการแทนที่ข้อความ สำหรับสิ่งนี้ API ให้คลาส Rectangle ต่อไปนี้เป็นขั้นตอนในการค้นหาและแทนที่ข้อความในส่วนเฉพาะของหน้า PDF
- โหลดไฟล์ PDF โดยใช้คลาส Document
- สร้างอินสแตนซ์ของคลาส TextFragmentAbsorber และเริ่มต้นด้วยข้อความที่คุณต้องการค้นหาและแทนที่ในไฟล์ PDF
- ตั้งค่าขอบเขตของหน้าสำหรับการค้นหาโดยใช้เมธอด TextFragmentAbsorber->getTextSearchOptions()->setRectangle (System::SharedPtr< Aspose::Pdf::Rectangle>)
- ยอมรับ TextFragmentAbsorber สำหรับหน้าเฉพาะโดยใช้ Document->getPages()->idxget (int32t index)->Accept (System::SharedPtrText::TextFragmentAbsorber ผู้เยี่ยมชม) วิธีการ
- ดึงข้อความทั้งหมดที่เกิดขึ้นโดยใช้เมธอด TextFragmentAbsorber->getTextFragments()
- วนซ้ำ TextFragmentCollection และอัปเดตข้อความโดยใช้เมธอด TextFragment->setText (System::String value)
- บันทึกไฟล์ PDF ที่อัปเดตโดยใช้เมธอด Document->Save (System::String outputFileName)
ต่อไปนี้คือโค้ดตัวอย่างสำหรับค้นหาและแทนที่ข้อความในพื้นที่หน้า PDF เฉพาะ
// โหลดไฟล์ PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");
// สร้างวัตถุ TextAbsorber เพื่อค้นหาอินสแตนซ์ทั้งหมดของวลีค้นหาที่ป้อน
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");
// ค้นหาข้อความภายในขอบเขตหน้า
textFragmentAbsorber->get_TextSearchOptions()->set_LimitToPageBounds(true);
// ระบุพื้นที่หน้าสำหรับ TextSearchOptions
textFragmentAbsorber->get_TextSearchOptions()->set_Rectangle(MakeObject<Rectangle>(100, 100, 800, 700));
// ยอมรับตัวดูดซับสำหรับหน้าแรกของเอกสาร
pdfDocument->get_Pages()->idx_get(1)->Accept(textFragmentAbsorber);
// รับเศษข้อความที่แยกออกมา
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();
// วนรอบชิ้นส่วน
for (auto textFragment : textFragmentCollection)
{
// ปรับปรุงข้อความและคุณสมบัติอื่นๆ
textFragment->set_Text(u"UPDATED TEXT");
textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
textFragment->get_TextState()->set_FontSize(22);
}
// บันทึกเอกสาร PDF ที่เป็นผลลัพธ์
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");
ค้นหาและแทนที่ข้อความในไฟล์ PDF โดยใช้ Regular Expressions
Aspose.PDF for C++ ยังให้ความสามารถในการค้นหาข้อความโดยใช้นิพจน์ทั่วไป ด้วยนิพจน์ทั่วไป คุณสามารถค้นหาข้อความ เช่น ที่อยู่อีเมลหรือหมายเลขโทรศัพท์ เป็นต้น สำหรับสิ่งนี้ คุณต้องระบุนิพจน์ทั่วไปแทนสตริงการค้นหา และใช้คลาส TextSearchOptions เพื่อระบุว่าคุณกำลังใช้นิพจน์ทั่วไป การแสดงออกสำหรับการค้นหา ต่อไปนี้เป็นขั้นตอนในการค้นหาและแทนที่ข้อความในไฟล์ PDF โดยใช้นิพจน์ทั่วไป
- โหลดไฟล์ PDF โดยใช้คลาส Document
- สร้างอินสแตนซ์ของคลาส TextFragmentAbsorber และเริ่มต้นด้วยนิพจน์ทั่วไปที่คุณต้องการใช้
- เริ่มต้นคลาส TextSearchOptions และส่งผ่านค่าจริงไปยังตัวสร้าง จะระบุว่าคุณกำลังค้นหาโดยใช้นิพจน์ทั่วไป
- กำหนดวัตถุ TextSearchOptions ให้กับคลาส TextFragmentAbsorber โดยใช้ TextFragmentAbsorber->setTextSearchOptions (System::SharedPtrAspose::Pdf::Text::TextSearchOptions ค่า) วิธีการ
- ยอมรับ TextFragmentAbsorber สำหรับหน้าโดยใช้ Document->getPages()->Accept (System::SharedPtrText::TextFragmentAbsorber ผู้เยี่ยมชม) วิธีการ
- ดึงข้อความทั้งหมดที่เกิดขึ้นโดยใช้เมธอด TextFragmentAbsorber->getTextFragments()
- วนซ้ำ TextFragmentCollection และอัปเดตข้อความโดยใช้เมธอด TextFragment->setText (System::String value)
- บันทึกไฟล์ PDF ที่อัปเดตโดยใช้เมธอด Document->Save (System::String outputFileName)
ต่อไปนี้คือโค้ดตัวอย่างสำหรับค้นหาและแทนที่ข้อความในไฟล์ PDF โดยใช้นิพจน์ทั่วไป
// โหลดไฟล์ PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 2.pdf");
// สร้างวัตถุ TextAbsorber เพื่อค้นหาอินสแตนซ์ทั้งหมดของวลีค้นหาที่ป้อน
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"\\d{4} - \\d{4}"); // Like 1999-2000
// ตั้งค่าตัวเลือกการค้นหาข้อความเพื่อเปิดใช้งานการใช้นิพจน์ทั่วไป
auto textSearchOptions = MakeObject<TextSearchOptions>(true);
textFragmentAbsorber->set_TextSearchOptions(textSearchOptions);
// รับตัวดูดซับสำหรับทุกหน้าของเอกสาร
pdfDocument->get_Pages()->Accept(textFragmentAbsorber);
// รับเศษข้อความที่แยกออกมา
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();
// วนรอบชิ้นส่วน
for (auto textFragment : textFragmentCollection)
{
// ปรับปรุงข้อความและคุณสมบัติอื่นๆ
textFragment->set_Text(u"UPDATED TEXT");
textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
textFragment->get_TextState()->set_FontSize(22);
}
// บันทึกเอกสาร PDF ที่เป็นผลลัพธ์
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");
รับใบอนุญาตฟรี
คุณสามารถลองใช้ API ได้โดยไม่มีข้อจำกัดในการประเมินโดยขอ ใบอนุญาตชั่วคราวฟรี
บทสรุป
ในบทความนี้ คุณได้เรียนรู้วิธีค้นหาและแทนที่ข้อความในไฟล์ PDF โดยใช้ C++ คุณได้เห็นวิธีการแทนที่ข้อความในเอกสาร PDF ทั้งหน้า หน้า PDF เฉพาะ หรือพื้นที่เฉพาะของหน้า นอกจากนี้ คุณได้เรียนรู้วิธีค้นหาและแทนที่ข้อความโดยใช้นิพจน์ทั่วไป Aspose.PDF for C++ เป็น API ที่ทรงพลังพร้อมคุณสมบัติเพิ่มเติมมากมายที่ทำให้การทำงานกับเอกสาร PDF เป็นเรื่องง่าย คุณสามารถสำรวจ API โดยละเอียดได้โดยใช้ เอกสารอย่างเป็นทางการ หากคุณมีคำถามใดๆ โปรดติดต่อเราได้ที่ ฟอรัม