Najít a nahradit text v PDF pomocí C++

PDF je populární formát, který se široce používá pro sdílení dokumentů mezi organizacemi a jednotlivci. Mohou nastat situace, kdy budete muset před sdílením najít a nahradit nějaký text v dokumentech PDF. Můžete to udělat ručně, ale to by zabralo více času a bylo by to méně efektivní. Lepší a rychlejší možností by bylo udělat to programově. V tomto článku se dozvíte, jak najít a nahradit text v souborech PDF pomocí C++.

C++ API pro vyhledání a nahrazení textu v souborech PDF

Aspose.PDF for C++ je knihovna C++ pro práci se soubory PDF. Poskytuje spoustu funkcí, které vám pomohou automatizovat různé aspekty vašich pracovních postupů PDF. Jednou z takových funkcí je vyhledání a nahrazení textu v souborech PDF. Rozhraní API můžete nainstalovat buď prostřednictvím NuGet, nebo si jej stáhnout přímo ze sekce ke stažení.

PM> Install-Package Aspose.PDF.Cpp

Najít a nahradit text v PDF pomocí C++

Aspose.PDF for C++ poskytuje třídu TextFragmentAbsorber pro vyhledávání textu v dokumentech PDF. Tuto třídu inicializujete textem, který chcete najít, a použijete ji k načtení všech odpovídajících fragmentů textu. Jakmile jsou všechny fragmenty k dispozici, přepnete se na ně a nahradíte text. Následují kroky k vyhledání a nahrazení textu v souborech PDF pomocí C++.

Následuje ukázkový kód pro vyhledání a nahrazení textu v celém souboru PDF pomocí C++.

// Načíst soubor PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");

// Vytvořte objekt TextAbsorber, abyste našli všechny výskyty vstupní hledané fráze
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");

// Přijměte absorbér pro všechny stránky
pdfDocument->get_Pages()->Accept(textFragmentAbsorber);

// Získejte extrahované fragmenty textu
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// Projděte fragmenty
for (auto textFragment : textFragmentCollection)
{
	// Aktualizujte text a další vlastnosti
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// Uložte výsledný dokument PDF.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");

C++ Najít a nahradit text na konkrétní stránce PDF

Mohou nastat situace, kdy budete chtít najít a nahradit text pouze na konkrétní stránce, nikoli v celém dokumentu. Za tímto účelem přijměte objekt TextFragmentAbsorber pro stránku, kde chcete text nahradit. Následují kroky k vyhledání a nahrazení textu na konkrétní stránce v dokumentu PDF.

Následuje ukázkový kód pro vyhledání a nahrazení textu na konkrétní stránce PDF pomocí C++.

// Načíst soubor PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");

// Vytvořte objekt TextAbsorber, abyste našli všechny výskyty vstupní hledané fráze
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");

// Přijměte absorbér pro druhou stránku dokumentu
pdfDocument->get_Pages()->idx_get(2)->Accept(textFragmentAbsorber);

// Získejte extrahované fragmenty textu
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// Projděte fragmenty
for (auto textFragment : textFragmentCollection)
{
	// Aktualizujte text a další vlastnosti
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// Uložte výsledný dokument PDF.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument2.pdf");

Nahraďte text v oblasti stránek PDF pomocí C++

Namísto prohledávání celé stránky můžete určit oblast stránky, kde chcete nahradit text. K tomu poskytuje API třídu Rectangle. Následují kroky k vyhledání a nahrazení textu v určité části stránky PDF.

Následuje ukázkový kód pro vyhledání a nahrazení textu v konkrétní oblasti stránky PDF.

// Načíst soubor PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");

// Vytvořte objekt TextAbsorber, abyste našli všechny výskyty vstupní hledané fráze
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");

// hledat text v rámci stránky
textFragmentAbsorber->get_TextSearchOptions()->set_LimitToPageBounds(true);

// zadejte oblast stránky pro TextSearchOptions
textFragmentAbsorber->get_TextSearchOptions()->set_Rectangle(MakeObject<Rectangle>(100, 100, 800, 700));

// Přijměte absorbér pro první stránku dokumentu
pdfDocument->get_Pages()->idx_get(1)->Accept(textFragmentAbsorber);

// Získejte extrahované fragmenty textu
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// Projděte fragmenty
for (auto textFragment : textFragmentCollection)
{
	// Aktualizujte text a další vlastnosti
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// Uložte výsledný dokument PDF.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");

Najít a nahradit text v souborech PDF pomocí regulárních výrazů

Aspose.PDF for C++ také poskytuje možnost prohledávat text pomocí regulárních výrazů. Pomocí regulárních výrazů můžete najít text, jako jsou e-mailové adresy nebo telefonní čísla atd. K tomu musíte místo vyhledávacího řetězce zadat regulární výraz a použít třídu TextSearchOptions k označení, že používáte regulární výraz výraz pro hledání. Následují kroky k vyhledání a nahrazení textu v souborech PDF pomocí regulárního výrazu.

Následuje ukázkový kód pro vyhledání a nahrazení textu v souborech PDF pomocí regulárního výrazu.

// Načíst soubor PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 2.pdf");

// Vytvořte objekt TextAbsorber, abyste našli všechny výskyty vstupní hledané fráze
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"\\d{4} - \\d{4}"); // Like 1999-2000

// Chcete-li povolit použití regulárních výrazů, nastavte možnost textového vyhledávání
auto textSearchOptions = MakeObject<TextSearchOptions>(true);
textFragmentAbsorber->set_TextSearchOptions(textSearchOptions);

// Přijměte absorbér pro všechny stránky dokumentu
pdfDocument->get_Pages()->Accept(textFragmentAbsorber);

// Získejte extrahované fragmenty textu
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// Projděte fragmenty
for (auto textFragment : textFragmentCollection)
{
	// Aktualizujte text a další vlastnosti
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// Uložte výsledný dokument PDF.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");

Získejte bezplatnou licenci

Rozhraní API můžete vyzkoušet bez omezení hodnocení tím, že požádáte o bezplatnou dočasnou licenci.

Závěr

V tomto článku jste se naučili, jak najít a nahradit text v souborech PDF pomocí C++. Viděli jste, jak nahradit text v celém dokumentu PDF, na konkrétní stránce PDF nebo v určité oblasti stránky. Dále jste se naučili vyhledávat a nahrazovat text pomocí regulárního výrazu. Aspose.PDF for C++ je výkonné API s mnoha dalšími funkcemi, díky kterým je práce s dokumenty PDF hračkou. Rozhraní API můžete podrobně prozkoumat pomocí oficiální dokumentace. Pokud máte nějaké dotazy, neváhejte nás kontaktovat na fóru.

Viz také