![Hitta och ersätt text i PDF med C++](images/Find-and-Replace-Text-in-PDF.jpg#center)
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
- Hitta och ersätt text i PDF med C++
- C++ Hitta och ersätt text på en specifik PDF-sida
- Ersätt text i PDF-sidregion med C++
- Hitta och ersätt text i PDF-filer med hjälp av reguljära uttryck
- Skaffa en gratis licens
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++.
- Ladda PDF-filen med klassen Dokument.
- Skapa en instans av klassen TextFragmentAbsorber och initiera den med texten som du vill hitta i PDF-filen.
- Acceptera TextFragmentAbsorber för sidorna med hjälp av Document->getPages()->Acceptera (System::SharedPtrText::TextFragmentAbsorber besökare) metod.
- Hämta alla textförekomster med metoden TextFragmentAbsorber->getTextFragments().
- Gå igenom TextFragmentCollection och uppdatera texten med metoden TextFragment->setText (System::String value).
- Spara den uppdaterade PDF-filen med metoden Dokument->Spara (System::String outputFileName).
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.
- Ladda PDF-filen med klassen Document.
- Skapa en instans av klassen TextFragmentAbsorber och initiera den med texten som du vill hitta i PDF-filen.
- Acceptera TextFragmentAbsorber för den specifika sidan med hjälp av Document->getPages()->idxget (int32t index)->Acceptera (System::SharedPtrText::TextFragmentAbsorber besökare) metod.
- Hämta alla textförekomster med metoden TextFragmentAbsorber->getTextFragments().
- Gå igenom TextFragmentCollection och uppdatera texten med metoden TextFragment->setText (System::String value).
- Spara den uppdaterade PDF-filen med metoden Dokument->Spara (System::String outputFileName).
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.
- Ladda PDF-filen med klassen Document.
- Skapa en instans av klassen TextFragmentAbsorber och initiera den med texten som du vill hitta och ersätta i PDF-filen.
- Ställ in sidregionen för sökning med hjälp av metoden TextFragmentAbsorber->getTextSearchOptions()->setRectangle (System::SharedPtr< Aspose::Pdf::Rectangle> value).
- Acceptera TextFragmentAbsorber för den specifika sidan med hjälp av Document->getPages()->idxget (int32t index)->Acceptera (System::SharedPtrText::TextFragmentAbsorber besökare) metod.
- Hämta alla textförekomster med metoden TextFragmentAbsorber->getTextFragments().
- Gå igenom TextFragmentCollection och uppdatera texten med metoden TextFragment->setText (System::String value).
- Spara den uppdaterade PDF-filen med metoden Dokument->Spara (System::String outputFileName).
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.
- Ladda PDF-filen med klassen Document.
- Skapa en instans av klassen TextFragmentAbsorber och initiera den med det reguljära uttryck du vill använda.
- Initiera klassen TextSearchOptions och skicka den till dess konstruktor. Det kommer att indikera att du söker med ett reguljärt uttryck.
- Tilldela objektet TextSearchOptions till klassen TextFragmentAbsorber med hjälp av TextFragmentAbsorber->setTextSearchOptions (System::SharedPtrAspose::Pdf::Text::TextSearchOptions värde) metod.
- Acceptera TextFragmentAbsorber för sidorna med hjälp av Document->getPages()->Acceptera (System::SharedPtrText::TextFragmentAbsorber besökare) metod.
- Hämta alla textförekomster med metoden TextFragmentAbsorber->getTextFragments().
- Gå igenom TextFragmentCollection och uppdatera texten med metoden TextFragment->setText (System::String value).
- Spara den uppdaterade PDF-filen med metoden Dokument->Spara (System::String outputFileName).
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.