PDF – це популярний формат, який широко використовується для обміну документами між організаціями та окремими особами. Можуть бути випадки, коли вам доведеться знайти та замінити текст у PDF-документах, перш ніж надати спільний доступ. Ви можете зробити це вручну, але це займе більше часу та буде менш ефективним. Кращим і швидшим варіантом було б зробити це програмно. У цій статті ви дізнаєтесь, як знаходити та замінювати текст у файлах PDF за допомогою C++.
- C++ API для пошуку та заміни тексту в PDF-файлах
- Пошук і заміна тексту в PDF за допомогою C++
- C++ Пошук і заміна тексту на певній сторінці PDF
- Заміна тексту в області сторінки PDF за допомогою C++
- Знайдіть і замініть текст у файлах PDF за допомогою регулярних виразів
- Отримайте безкоштовну ліцензію
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)->Прийняти (System::SharedPtr)Text::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> value).
- Прийміть TextFragmentAbsorber для певної сторінки за допомогою Document->getPages()->idxget (індекс int32t)->Прийняти (System::SharedPtr)Text::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 за допомогою регулярних виразів
Aspose.PDF for C++ також надає можливість пошуку тексту за допомогою регулярних виразів. За допомогою регулярних виразів можна знайти такі тексти, як адреси електронної пошти чи номери телефонів тощо. Для цього вам потрібно вказати регулярний вираз замість рядка пошуку та використати клас TextSearchOptions, щоб вказати, що ви використовуєте звичайний вираз для пошуку. Нижче наведено кроки для пошуку та заміни тексту у файлах PDF за допомогою регулярного виразу.
- Завантажте PDF-файл за допомогою класу Document.
- Створіть екземпляр класу TextFragmentAbsorber та ініціалізуйте його регулярним виразом, який ви хочете використовувати.
- Ініціалізуйте клас TextSearchOptions і передайте true його конструктору. Це вкаже, що ви шукаєте за допомогою регулярного виразу.
- Призначте об’єкт TextSearchOptions класу TextFragmentAbsorber за допомогою TextFragmentAbsorber->setTextSearchOptions (System::SharedPtr)Aspose::Pdf::Text::TextSearchOptions значення) метод.
- Прийміть TextFragmentAbsorber для сторінок за допомогою Document->getPages()->Accept (System::SharedPtr)Text::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, використовуючи офіційну документацію. Якщо у вас виникли запитання, зв’яжіться з нами на форумі.