Hitta och ersätt text i PDF med C++

PDF är ett populärt format som används ofta för att dela dokument mellan organisationer och individer. Det kan finnas scenarier där du måste hitta och ersätta viss text i PDF-dokumenten innan du delar. Du kan göra detta manuellt, men det skulle ta mer tid och vara mindre effektivt. Det bättre och snabbare alternativet skulle vara att göra detta programmatiskt. I den här artikeln kommer du att lära dig hur du hittar och ersätter text i PDF-filer med C++.

C++ API för att hitta och ersätta text i PDF-filer

Aspose.PDF for C++ är ett C++-bibliotek för att arbeta med PDF-filer. Den tillhandahåller ett gäng funktioner som hjälper dig att automatisera olika aspekter av dina PDF-arbetsflöden. En sådan funktion är att hitta och ersätta text i PDF-filer. Du kan antingen installera API:t genom NuGet eller ladda ner det direkt från avsnittet downloads.

PM> Install-Package Aspose.PDF.Cpp

Hitta och ersätt text i PDF med C++

Aspose.PDF för C++ tillhandahåller klassen TextFragmentAbsorber för att söka text i PDF-dokument. Du initialiserar den här klassen med den text du vill hitta och använder den för att hämta alla matchande textfragment. När alla fragment är tillgängliga, loopar du över dem och ersätter texten. Följande är stegen för att hitta och ersätta text i PDF-filer med C++.

Följande är exempelkoden för att hitta och ersätta text i hela PDF-filen med C++.

// Ladda PDF-fil
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");

// Skapa TextAbsorber-objekt för att hitta alla instanser av den inmatade sökfrasen
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");

// Acceptera absorbenten för alla sidor
pdfDocument->get_Pages()->Accept(textFragmentAbsorber);

// Hämta de extraherade textfragmenten
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// Gå igenom fragmenten
for (auto textFragment : textFragmentCollection)
{
	// Uppdatera text och andra egenskaper
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// Spara det resulterande PDF-dokumentet.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");

C++ Hitta och ersätt text på en specifik PDF-sida

Det kan finnas situationer där du bara vill hitta och ersätta text på en specifik sida snarare än hela dokumentet. För detta, acceptera objektet TextFragmentAbsorber för sidan där du vill ersätta texten. Följande är stegen för att hitta och ersätta text på en viss sida i PDF-dokumentet.

Följande är exempelkoden för att hitta och ersätta text på en specifik PDF-sida med C++.

// Ladda PDF-fil
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");

// Skapa TextAbsorber-objekt för att hitta alla instanser av den inmatade sökfrasen
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");

// Acceptera absorbenten för andra sidan av dokumentet
pdfDocument->get_Pages()->idx_get(2)->Accept(textFragmentAbsorber);

// Hämta de extraherade textfragmenten
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// Gå igenom fragmenten
for (auto textFragment : textFragmentCollection)
{
	// Uppdatera text och andra egenskaper
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// Spara det resulterande PDF-dokumentet.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument2.pdf");

Ersätt text i PDF-sidregion med C++

Istället för att söka på hela sidan kan du ange den region på sidan där du vill ersätta texten. För detta tillhandahåller API klassen Rectangle. Följande är stegen för att hitta och ersätta text i en specifik del av PDF-sidan.

Följande är exempelkoden för att hitta och ersätta text i en specifik PDF-sida.

// Ladda PDF-fil
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");

// Skapa TextAbsorber-objekt för att hitta alla instanser av den inmatade sökfrasen
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");

// söktext inom sidgränserna
textFragmentAbsorber->get_TextSearchOptions()->set_LimitToPageBounds(true);

// ange sidregionen för TextSearchOptions
textFragmentAbsorber->get_TextSearchOptions()->set_Rectangle(MakeObject<Rectangle>(100, 100, 800, 700));

// Acceptera absorbenten för första sidan av dokumentet
pdfDocument->get_Pages()->idx_get(1)->Accept(textFragmentAbsorber);

// Hämta de extraherade textfragmenten
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// Gå igenom fragmenten
for (auto textFragment : textFragmentCollection)
{
	// Uppdatera text och andra egenskaper
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// Spara det resulterande PDF-dokumentet.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");

Hitta och ersätt text i PDF-filer med hjälp av reguljära uttryck

Aspose.PDF för C++ ger också möjligheten att söka text med hjälp av reguljära uttryck. Med reguljära uttryck kan du hitta text som e-postadresser eller telefonnummer etc. För detta måste du ange det reguljära uttrycket istället för söksträngen och använda klassen TextSearchOptions för att indikera att du använder en vanlig uttryck för att söka. Följande är stegen för att hitta och ersätta text i PDF-filer med ett reguljärt uttryck.

Följande är exempelkoden för att hitta och ersätta text i PDF-filer med ett reguljärt uttryck.

// Ladda PDF-fil
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 2.pdf");

// Skapa TextAbsorber-objekt för att hitta alla instanser av den inmatade sökfrasen
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"\\d{4} - \\d{4}"); // Like 1999-2000

// Ställ in textsökningsalternativ för att aktivera användning av reguljära uttryck
auto textSearchOptions = MakeObject<TextSearchOptions>(true);
textFragmentAbsorber->set_TextSearchOptions(textSearchOptions);

// Acceptera absorbenten för alla sidor i dokumentet
pdfDocument->get_Pages()->Accept(textFragmentAbsorber);

// Hämta de extraherade textfragmenten
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// Gå igenom fragmenten
for (auto textFragment : textFragmentCollection)
{
	// Uppdatera text och andra egenskaper
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// Spara det resulterande PDF-dokumentet.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");

Skaffa en gratis licens

Du kan prova API utan utvärderingsbegränsningar genom att begära en gratis tillfällig licens.

Slutsats

I den här artikeln har du lärt dig hur du hittar och ersätter text i PDF-filer med C++. Du har sett hur man ersätter text i hela PDF-dokumentet, en specifik PDF-sida eller en viss del av sidan. Dessutom har du lärt dig hur du söker och ersätter text med hjälp av ett reguljärt uttryck. Aspose.PDF för C++ är ett kraftfullt API med många ytterligare funktioner som gör det enkelt att arbeta med PDF-dokument. Du kan utforska API:et i detalj genom att använda den officiella dokumentationen. Om du har några frågor är du välkommen att kontakta oss på forumet.

Se även