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
- Znajdź i zamień tekst w formacie PDF przy użyciu C++
- C++ Znajdź i zamień tekst na określonej stronie PDF
- Zamień tekst w regionie strony PDF za pomocą C++
- Znajdź i zamień tekst w plikach PDF za pomocą wyrażeń regularnych
- Uzyskaj bezpłatną licencję
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++.
- Załaduj plik PDF przy użyciu klasy Document.
- Utwórz instancję klasy TextFragmentAbsorber i zainicjuj ją tekstem, który chcesz znaleźć w pliku PDF.
- Zaakceptuj TextFragmentAbsorber dla stron korzystających z [Document->getPages()->Accept (System::SharedPtrText::TextFragmentAbsorber odwiedzający) 10 metoda.
- Pobierz wszystkie wystąpienia tekstu za pomocą metody TextFragmentAbsorber->getTextFragments().
- Przejdź przez TextFragmentCollection i zaktualizuj tekst za pomocą metody TextFragment->setText (System::String value).
- Zapisz zaktualizowany plik PDF za pomocą metody Document->Save (System::String outputFileName).
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.
- Załaduj plik PDF przy użyciu klasy Document.
- Utwórz instancję klasy TextFragmentAbsorber i zainicjuj ją tekstem, który chcesz znaleźć w pliku PDF.
- Zaakceptuj TextFragmentAbsorber dla konkretnej strony za pomocą [Document->getPages()->idxget (int32t index)->Accept (System::SharedPtrText::TextFragmentAbsorber odwiedzający) 19 metoda.
- Pobierz wszystkie wystąpienia tekstu za pomocą metody TextFragmentAbsorber->getTextFragments().
- Przejdź przez TextFragmentCollection i zaktualizuj tekst za pomocą metody TextFragment->setText (System::String value).
- Zapisz zaktualizowany plik PDF za pomocą metody Document->Save (System::String outputFileName).
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.
- Załaduj plik PDF przy użyciu klasy Document.
- Utwórz instancję klasy TextFragmentAbsorber i zainicjuj ją tekstem, który chcesz znaleźć i zamienić w pliku PDF.
- Ustaw obszar strony do wyszukiwania za pomocą metody TextFragmentAbsorber->getTextSearchOptions()->setRectangle (System::SharedPtr< Aspose::Pdf::Rectangle> value).
- Zaakceptuj TextFragmentAbsorber dla konkretnej strony za pomocą [Document->getPages()->idxget (int32t index)->Accept (System::SharedPtrText::TextFragmentAbsorber odwiedzający) 29 metoda.
- Pobierz wszystkie wystąpienia tekstu za pomocą metody TextFragmentAbsorber->getTextFragments().
- Przejdź przez TextFragmentCollection i zaktualizuj tekst za pomocą metody TextFragment->setText (System::String value).
- Zapisz zaktualizowany plik PDF za pomocą metody Document->Save (System::String outputFileName).
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.
- Załaduj plik PDF przy użyciu klasy Document.
- Utwórz instancję klasy TextFragmentAbsorber i zainicjuj ją wyrażeniem regularnym, którego chcesz użyć.
- Zainicjuj klasę TextSearchOptions i przekaż wartość true do jej konstruktora. Wskaże, że szukasz przy użyciu wyrażenia regularnego.
- Przypisz obiekt TextSearchOptions do klasy TextFragmentAbsorber za pomocą TextFragmentAbsorber->setTextSearchOptions (System::SharedPtrAspose::Pdf::Text::TextSearchOptions wartość) metoda.
- Zaakceptuj TextFragmentAbsorber dla stron korzystających z [Document->getPages()->Accept (System::SharedPtrText::TextFragmentAbsorber odwiedzający) 42 metoda.
- Pobierz wszystkie wystąpienia tekstu za pomocą metody TextFragmentAbsorber->getTextFragments().
- Przejdź przez TextFragmentCollection i zaktualizuj tekst za pomocą metody TextFragment->setText (System::String value).
- Zapisz zaktualizowany plik PDF za pomocą metody Document->Save (System::String outputFileName).
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.