Trova e sostituisci testo in PDF usando C++

PDF è un formato popolare ampiamente utilizzato per la condivisione di documenti tra organizzazioni e individui. Potrebbero verificarsi scenari in cui è necessario trovare e sostituire del testo nei documenti PDF prima della condivisione. Puoi farlo manualmente, ma ciò richiederebbe più tempo e sarebbe meno efficiente. L’opzione migliore e più veloce sarebbe quella di farlo a livello di codice. In questo articolo imparerai come trovare e sostituire il testo nei file PDF usando C++.

API C++ per trovare e sostituire il testo nei file PDF

Aspose.PDF for C++ è una libreria C++ per lavorare con i file PDF. Fornisce una serie di funzionalità che ti aiutano ad automatizzare vari aspetti dei tuoi flussi di lavoro PDF. Una di queste funzionalità è trovare e sostituire il testo nei file PDF. Puoi installare l’API tramite NuGet o scaricarla direttamente dalla sezione download.

PM> Install-Package Aspose.PDF.Cpp

Trova e sostituisci testo in PDF usando C++

Aspose.PDF per C++ fornisce la classe TextFragmentAbsorber per la ricerca di testo nei documenti PDF. Inizializza questa classe con il testo che desideri trovare e lo usi per recuperare tutti i frammenti di testo corrispondenti. Una volta che tutti i frammenti sono disponibili, passaci sopra e sostituisci il testo. Di seguito sono riportati i passaggi per trovare e sostituire il testo nei file PDF utilizzando C++.

Di seguito è riportato il codice di esempio per trovare e sostituire il testo nell’intero file PDF utilizzando C++.

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

// Crea un oggetto TextAbsorber per trovare tutte le istanze della frase di ricerca di input
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");

// Accetta l'assorbitore per tutte le pagine
pdfDocument->get_Pages()->Accept(textFragmentAbsorber);

// Ottieni i frammenti di testo estratti
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// Passa attraverso i frammenti
for (auto textFragment : textFragmentCollection)
{
	// Aggiorna testo e altre proprietà
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// Salva il documento PDF risultante.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");

C++ Trova e sostituisci testo in una pagina PDF specifica

Potrebbero verificarsi situazioni in cui desideri trovare e sostituire solo il testo su una pagina specifica anziché sull’intero documento. Per questo, accetta l’oggetto TextFragmentAbsorber per la pagina in cui vuoi sostituire il testo. Di seguito sono riportati i passaggi per trovare e sostituire il testo in una pagina particolare nel documento PDF.

Di seguito è riportato il codice di esempio per trovare e sostituire il testo in una pagina PDF specifica utilizzando C++.

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

// Crea un oggetto TextAbsorber per trovare tutte le istanze della frase di ricerca di input
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");

// Accettare l'assorbitore per la seconda pagina del documento
pdfDocument->get_Pages()->idx_get(2)->Accept(textFragmentAbsorber);

// Ottieni i frammenti di testo estratti
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// Passa attraverso i frammenti
for (auto textFragment : textFragmentCollection)
{
	// Aggiorna testo e altre proprietà
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// Salva il documento PDF risultante.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument2.pdf");

Sostituisci il testo nell’area della pagina PDF usando C++

Invece di cercare nell’intera pagina, puoi specificare l’area della pagina in cui desideri sostituire il testo. Per questo, l’API fornisce la classe Rectangle. Di seguito sono riportati i passaggi per trovare e sostituire il testo in una parte specifica della pagina PDF.

Di seguito è riportato il codice di esempio per trovare e sostituire il testo in un’area specifica della pagina PDF.

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

// Crea un oggetto TextAbsorber per trovare tutte le istanze della frase di ricerca di input
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");

// cercare il testo all'interno dei limiti della pagina
textFragmentAbsorber->get_TextSearchOptions()->set_LimitToPageBounds(true);

// specificare l'area della pagina per TextSearchOptions
textFragmentAbsorber->get_TextSearchOptions()->set_Rectangle(MakeObject<Rectangle>(100, 100, 800, 700));

// Accetta l'assorbitore per la prima pagina del documento
pdfDocument->get_Pages()->idx_get(1)->Accept(textFragmentAbsorber);

// Ottieni i frammenti di testo estratti
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// Passa attraverso i frammenti
for (auto textFragment : textFragmentCollection)
{
	// Aggiorna testo e altre proprietà
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// Salva il documento PDF risultante.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");

Trova e sostituisci testo nei file PDF utilizzando le espressioni regolari

Aspose.PDF per C++ offre anche la possibilità di cercare testo usando espressioni regolari. Con le espressioni regolari, puoi trovare testo come indirizzi e-mail o numeri di telefono, ecc. Per questo, devi specificare l’espressione regolare invece della stringa di ricerca e usare la classe TextSearchOptions per indicare che stai usando un espressione per la ricerca. Di seguito sono riportati i passaggi per trovare e sostituire il testo nei file PDF utilizzando un’espressione regolare.

Di seguito è riportato il codice di esempio per trovare e sostituire il testo nei file PDF utilizzando un’espressione regolare.

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

// Crea un oggetto TextAbsorber per trovare tutte le istanze della frase di ricerca di input
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"\\d{4} - \\d{4}"); // Like 1999-2000

// Imposta l'opzione di ricerca del testo per abilitare l'uso delle espressioni regolari
auto textSearchOptions = MakeObject<TextSearchOptions>(true);
textFragmentAbsorber->set_TextSearchOptions(textSearchOptions);

// Accetta l'assorbitore per tutte le pagine del documento
pdfDocument->get_Pages()->Accept(textFragmentAbsorber);

// Ottieni i frammenti di testo estratti
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// Passa attraverso i frammenti
for (auto textFragment : textFragmentCollection)
{
	// Aggiorna testo e altre proprietà
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// Salva il documento PDF risultante.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");

Ottieni una licenza gratuita

Puoi provare l’API senza limitazioni di valutazione richiedendo una licenza temporanea gratuita.

Conclusione

In questo articolo, hai imparato come trovare e sostituire il testo nei file PDF usando C++. Hai visto come sostituire il testo nell’intero documento PDF, in una pagina PDF specifica o in una particolare area della pagina. Inoltre, hai imparato a cercare e sostituire il testo utilizzando un’espressione regolare. Aspose.PDF per C++ è una potente API con molte funzionalità aggiuntive che rendono il lavoro con i documenti PDF un gioco da ragazzi. Puoi esplorare l’API in dettaglio utilizzando la documentazione ufficiale. In caso di domande, non esitare a contattarci sul forum.

Guarda anche