Tìm và thay thế văn bản trong PDF bằng C ++

PDF là định dạng phổ biến được sử dụng rộng rãi để chia sẻ tài liệu giữa các tổ chức và cá nhân. Có thể có tình huống bạn phải tìm và thay thế một số văn bản trong tài liệu PDF trước khi chia sẻ. Bạn có thể thực hiện việc này theo cách thủ công, nhưng sẽ mất nhiều thời gian hơn và kém hiệu quả hơn. Tùy chọn tốt hơn và nhanh hơn sẽ là thực hiện việc này theo chương trình. Trong bài viết này, bạn sẽ học cách tìm và thay thế văn bản trong tệp PDF bằng C ++.

API C ++ để tìm và thay thế văn bản trong tệp PDF

Aspose.PDF dành cho C ++ là thư viện C ++ để làm việc với các tệp PDF. Nó cung cấp một loạt các tính năng giúp bạn tự động hóa các khía cạnh khác nhau của quy trình làm việc PDF của mình. Một trong những tính năng như vậy là tìm và thay thế văn bản trong tệp PDF. Bạn có thể cài đặt API thông qua NuGet hoặc tải xuống trực tiếp từ phần tải xuống.

PM> Install-Package Aspose.PDF.Cpp

Tìm và thay thế văn bản trong PDF bằng C ++

Aspose.PDF cho C ++ cung cấp lớp TextFragmentAbsorber để tìm kiếm văn bản trong tài liệu PDF. Bạn khởi tạo lớp này với văn bản bạn muốn tìm và sử dụng nó để truy xuất tất cả các đoạn văn bản phù hợp. Khi tất cả các đoạn có sẵn, bạn lặp lại chúng và thay thế văn bản. Sau đây là các bước để tìm và thay thế văn bản trong tệp PDF bằng C ++.

Sau đây là mã mẫu để tìm và thay thế văn bản trong toàn bộ tệp PDF bằng C ++.

// Tải tệp PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");

// Tạo đối tượng TextAbsorber để tìm tất cả các phiên bản của cụm từ tìm kiếm đầu vào
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");

// Chấp nhận chất hấp thụ cho tất cả các trang
pdfDocument->get_Pages()->Accept(textFragmentAbsorber);

// Lấy các đoạn văn bản được trích xuất
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// Lặp lại các mảnh vỡ
for (auto textFragment : textFragmentCollection)
{
	// Cập nhật văn bản và các thuộc tính khác
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// Lưu tài liệu PDF kết quả.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");

C ++ Tìm và Thay thế Văn bản trong một Trang PDF Cụ thể

Có thể có những trường hợp bạn chỉ muốn tìm và thay thế văn bản trên một trang cụ thể hơn là toàn bộ tài liệu. Đối với điều này, hãy chấp nhận đối tượng TextFragmentAbsorber cho trang mà bạn muốn thay thế văn bản. Sau đây là các bước để tìm và thay thế văn bản trên một trang cụ thể trong tài liệu PDF.

Sau đây là mã mẫu để tìm và thay thế văn bản trên một trang PDF cụ thể bằng C ++.

// Tải tệp PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");

// Tạo đối tượng TextAbsorber để tìm tất cả các phiên bản của cụm từ tìm kiếm đầu vào
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");

// Chấp nhận chất hấp thụ cho trang thứ hai của tài liệu
pdfDocument->get_Pages()->idx_get(2)->Accept(textFragmentAbsorber);

// Lấy các đoạn văn bản được trích xuất
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// Lặp lại các mảnh vỡ
for (auto textFragment : textFragmentCollection)
{
	// Cập nhật văn bản và các thuộc tính khác
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// Lưu tài liệu PDF kết quả.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument2.pdf");

Thay thế Văn bản trong Vùng Trang PDF bằng C ++

Thay vì tìm kiếm trên toàn bộ trang, bạn có thể chỉ định vùng của trang mà bạn muốn thay thế văn bản. Đối với điều này, API cung cấp lớp Hình chữ nhật. Sau đây là các bước để tìm và thay thế văn bản trong một phần cụ thể của trang PDF.

Sau đây là mã mẫu để tìm và thay thế văn bản trong một vùng trang PDF cụ thể.

// Tải tệp PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");

// Tạo đối tượng TextAbsorber để tìm tất cả các phiên bản của cụm từ tìm kiếm đầu vào
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");

// văn bản tìm kiếm trong giới hạn trang
textFragmentAbsorber->get_TextSearchOptions()->set_LimitToPageBounds(true);

// chỉ định vùng trang cho TextSearchOptions
textFragmentAbsorber->get_TextSearchOptions()->set_Rectangle(MakeObject<Rectangle>(100, 100, 800, 700));

// Chấp nhận chất hấp thụ cho trang đầu tiên của tài liệu
pdfDocument->get_Pages()->idx_get(1)->Accept(textFragmentAbsorber);

// Lấy các đoạn văn bản được trích xuất
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// Lặp lại các mảnh vỡ
for (auto textFragment : textFragmentCollection)
{
	// Cập nhật văn bản và các thuộc tính khác
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// Lưu tài liệu PDF kết quả.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");

Tìm và thay thế văn bản trong tệp PDF bằng Biểu thức chính quy

Aspose.PDF cho C ++ cũng cung cấp khả năng tìm kiếm văn bản bằng cách sử dụng biểu thức chính quy. Với biểu thức chính quy, bạn có thể tìm thấy văn bản như địa chỉ email hoặc số điện thoại, v.v. Đối với điều này, bạn phải chỉ định biểu thức chính quy thay vì chuỗi tìm kiếm và sử dụng lớp TextSearchOptions để cho biết rằng bạn đang sử dụng biểu thức để tìm kiếm. Sau đây là các bước để tìm và thay thế văn bản trong tệp PDF bằng biểu thức chính quy.

Sau đây là mã mẫu để tìm và thay thế văn bản trong tệp PDF bằng biểu thức chính quy.

// Tải tệp PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 2.pdf");

// Tạo đối tượng TextAbsorber để tìm tất cả các phiên bản của cụm từ tìm kiếm đầu vào
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"\\d{4} - \\d{4}"); // Like 1999-2000

// Đặt tùy chọn tìm kiếm văn bản để cho phép sử dụng cụm từ thông dụng
auto textSearchOptions = MakeObject<TextSearchOptions>(true);
textFragmentAbsorber->set_TextSearchOptions(textSearchOptions);

// Chấp nhận chất hấp thụ cho tất cả các trang của tài liệu
pdfDocument->get_Pages()->Accept(textFragmentAbsorber);

// Lấy các đoạn văn bản được trích xuất
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// Lặp lại các mảnh vỡ
for (auto textFragment : textFragmentCollection)
{
	// Cập nhật văn bản và các thuộc tính khác
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// Lưu tài liệu PDF kết quả.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");

Nhận giấy phép miễn phí

Bạn có thể dùng thử API mà không có giới hạn đánh giá bằng cách yêu cầu giấy phép tạm thời miễn phí.

Sự kết luận

Trong bài viết này, bạn đã học cách tìm và thay thế văn bản trong tệp PDF bằng C ++. Bạn đã thấy cách thay thế văn bản trong toàn bộ tài liệu PDF, một trang PDF cụ thể hoặc một vùng cụ thể của trang. Hơn nữa, bạn đã học cách tìm kiếm và thay thế văn bản bằng biểu thức chính quy. Aspose.PDF cho C ++ là một API mạnh mẽ với nhiều tính năng bổ sung giúp làm việc với các tài liệu PDF trở nên thành công. Bạn có thể khám phá API chi tiết bằng cách sử dụng tài liệu chính thức. Nếu bạn có bất kỳ câu hỏi nào, vui lòng liên hệ với chúng tôi trên diễn đàn.

Xem thêm