Znajdź i zamień tekst w formacie PDF przy użyciu C++

PDF to popularny format, który jest powszechnie używany do udostępniania dokumentów między organizacjami i osobami. Mogą wystąpić sytuacje, w których trzeba będzie znaleźć i zamienić część tekstu w dokumentach PDF przed udostępnieniem. Możesz to zrobić ręcznie, ale zajmie to więcej czasu i będzie mniej wydajne. Lepszą i szybszą opcją byłoby zrobienie tego programowo. W tym artykule dowiesz się, jak znaleźć i zamienić tekst w plikach PDF za pomocą C++.

C++ API do znajdowania i zastępowania tekstu w plikach PDF

Aspose.PDF for C++ to biblioteka C++ do pracy z plikami PDF. Zapewnia szereg funkcji, które pomagają zautomatyzować różne aspekty obiegu dokumentów PDF. Jedną z takich funkcji jest znajdowanie i zastępowanie tekstu w plikach PDF. Możesz zainstalować API przez NuGet lub pobrać bezpośrednio z sekcji downloads.

PM> Install-Package Aspose.PDF.Cpp

Znajdź i zamień tekst w formacie PDF przy użyciu C++

Aspose.PDF for C++ udostępnia klasę TextFragmentAbsorber do wyszukiwania tekstu w dokumentach PDF. Inicjujesz tę klasę tekstem, który chcesz znaleźć, i używasz go do pobrania wszystkich pasujących fragmentów tekstu. Gdy wszystkie fragmenty będą dostępne, zapętlisz je i zastąpisz tekst. Poniżej przedstawiono kroki znajdowania i zastępowania tekstu w plikach PDF przy użyciu języka C++.

Poniżej znajduje się przykładowy kod służący do znajdowania i zastępowania tekstu w całym pliku PDF przy użyciu języka C++.

// Załaduj plik PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");

// Utwórz obiekt TextAbsorber, aby znaleźć wszystkie wystąpienia wprowadzonej frazy wyszukiwania
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");

// Zaakceptuj pochłaniacz dla wszystkich stron
pdfDocument->get_Pages()->Accept(textFragmentAbsorber);

// Pobierz wyodrębnione fragmenty tekstu
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// Przejrzyj fragmenty
for (auto textFragment : textFragmentCollection)
{
	// Zaktualizuj tekst i inne właściwości
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// Zapisz wynikowy dokument PDF.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");

C++ Znajdź i zamień tekst na określonej stronie PDF

Mogą wystąpić sytuacje, w których chcesz znaleźć i zamienić tekst tylko na określonej stronie, a nie w całym dokumencie. W tym celu zaakceptuj obiekt TextFragmentAbsorber dla strony, na której chcesz zastąpić tekst. Poniżej przedstawiono kroki, aby znaleźć i zamienić tekst na określonej stronie w dokumencie PDF.

Poniżej znajduje się przykładowy kod służący do znajdowania i zastępowania tekstu na określonej stronie PDF przy użyciu języka C++.

// Załaduj plik PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");

// Utwórz obiekt TextAbsorber, aby znaleźć wszystkie wystąpienia wprowadzonej frazy wyszukiwania
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");

// Zaakceptuj pochłaniacz drugiej strony dokumentu
pdfDocument->get_Pages()->idx_get(2)->Accept(textFragmentAbsorber);

// Pobierz wyodrębnione fragmenty tekstu
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// Przejrzyj fragmenty
for (auto textFragment : textFragmentCollection)
{
	// Zaktualizuj tekst i inne właściwości
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// Zapisz wynikowy dokument PDF.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument2.pdf");

Zamień tekst w regionie strony PDF za pomocą C++

Zamiast przeszukiwać całą stronę, możesz określić region strony, w którym chcesz zastąpić tekst. W tym celu interfejs API udostępnia klasę Rectangle. Poniżej przedstawiono kroki, aby znaleźć i zamienić tekst w określonej części strony PDF.

Poniżej znajduje się przykładowy kod służący do znajdowania i zastępowania tekstu w określonym regionie strony PDF.

// Załaduj plik PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");

// Utwórz obiekt TextAbsorber, aby znaleźć wszystkie wystąpienia wprowadzonej frazy wyszukiwania
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");

// wyszukaj tekst w granicach strony
textFragmentAbsorber->get_TextSearchOptions()->set_LimitToPageBounds(true);

// określ region strony dla TextSearchOptions
textFragmentAbsorber->get_TextSearchOptions()->set_Rectangle(MakeObject<Rectangle>(100, 100, 800, 700));

// Zaakceptuj pochłaniacz pierwszej strony dokumentu
pdfDocument->get_Pages()->idx_get(1)->Accept(textFragmentAbsorber);

// Pobierz wyodrębnione fragmenty tekstu
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// Przejrzyj fragmenty
for (auto textFragment : textFragmentCollection)
{
	// Zaktualizuj tekst i inne właściwości
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// Zapisz wynikowy dokument PDF.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");

Znajdź i zamień tekst w plikach PDF za pomocą wyrażeń regularnych

Aspose.PDF for C++ zapewnia również możliwość wyszukiwania tekstu za pomocą wyrażeń regularnych. Za pomocą wyrażeń regularnych możesz znaleźć tekst, taki jak adresy e-mail lub numery telefonów itp. W tym celu musisz określić wyrażenie regularne zamiast ciągu wyszukiwania i użyć klasy TextSearchOptions, aby wskazać, że używasz zwykłego wyrażenie do wyszukiwania. Poniżej opisano kroki znajdowania i zastępowania tekstu w plikach PDF za pomocą wyrażenia regularnego.

Poniżej znajduje się przykładowy kod służący do znajdowania i zastępowania tekstu w plikach PDF za pomocą wyrażenia regularnego.

// Załaduj plik PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 2.pdf");

// Utwórz obiekt TextAbsorber, aby znaleźć wszystkie wystąpienia wprowadzonej frazy wyszukiwania
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"\\d{4} - \\d{4}"); // Like 1999-2000

// Ustaw opcję wyszukiwania tekstowego, aby włączyć użycie wyrażeń regularnych
auto textSearchOptions = MakeObject<TextSearchOptions>(true);
textFragmentAbsorber->set_TextSearchOptions(textSearchOptions);

// Zaakceptuj pochłaniacz dla wszystkich stron dokumentu
pdfDocument->get_Pages()->Accept(textFragmentAbsorber);

// Pobierz wyodrębnione fragmenty tekstu
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// Przejrzyj fragmenty
for (auto textFragment : textFragmentCollection)
{
	// Zaktualizuj tekst i inne właściwości
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// Zapisz wynikowy dokument PDF.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");

Uzyskaj bezpłatną licencję

Możesz wypróbować interfejs API bez ograniczeń ewaluacyjnych, prosząc o bezpłatną licencję tymczasową.

Wniosek

W tym artykule nauczyłeś się znajdować i zamieniać tekst w plikach PDF za pomocą C++. Widziałeś, jak zastąpić tekst w całym dokumencie PDF, określonej stronie PDF lub określonym obszarze strony. Ponadto nauczyłeś się wyszukiwać i zastępować tekst za pomocą wyrażeń regularnych. Aspose.PDF for C++ to potężne API z wieloma dodatkowymi funkcjami, które sprawiają, że praca z dokumentami PDF to bułka z masłem. Możesz szczegółowo zapoznać się z interfejsem API, korzystając z oficjalnej dokumentacji. Jeśli masz jakieś pytania, skontaktuj się z nami na forum.

Zobacz też