
Cercare testo specifico in PDF documenti è un compito comune nei sistemi di gestione dei documenti, strumenti di revisione legale, elaboratori di fatture e altre applicazioni aziendali. Che tu stia cercando di localizzare una parola chiave, estrarre determinati valori o redigere informazioni sensibili, automatizzare la ricerca nei PDF può far risparmiare molto tempo e fatica.
In questo post del blog, imparerai come cercare testo nei file PDF programmaticamente usando C#. Ti guideremo attraverso le funzionalità chiave passo dopo passo con esempi pratici di codice C#.
Questo articolo tratta i seguenti argomenti:
- Libreria C# per cercare nei documenti PDF
- Cerca testo in PDF utilizzando C#
- Ricerca senza distinzione tra maiuscole e minuscole e per parola intera in PDF
- Cercare con espressioni regolari in PDF
- Cerca ed Estrai Testo con Dettagli di Posizione
- Evidenziare o Sostituire il Testo Trovato
- Cerca in tutte le pagine o in pagine specifiche
- Cerca e Censura Informazioni Sensibili
- Risorse gratuite
C# Libreria per cercare nei documenti PDF
Aspose.PDF for .NET semplifica il processo di ricerca di testo nei file PDF utilizzando C#. Ti consente di trovare parole esatte, abbinare modelli utilizzando espressioni regolari e persino evidenziare o sostituire il testo corrispondente—il tutto con solo alcune righe di codice. Questa potente libreria offre funzionalità robuste per manipolare documenti PDF. Consente agli sviluppatori di implementare facilmente funzionalità di ricerca. Con Aspose.PDF, puoi trovare rapidamente parole in un PDF, rendendolo uno strumento prezioso per gli sviluppatori software.
Prima di immergerti nella ricerca di testo nei PDF, devi configurare il tuo ambiente di sviluppo. Segui questi passaggi per iniziare con Aspose.PDF for .NET:
1. Installa Aspose.PDF for .NET.
Scaricalo da releases o installalo tramite NuGet.Apri il tuo progetto .NET in Visual Studio e esegui il seguente comando nella Console di Gestione Pacchetti NuGet:
PM> Install-Package Aspose.PDF
Questo comando aggiunge la libreria Aspose.PDF al tuo progetto in modo da poter accedere alle sue potenti funzionalità di elaborazione PDF.
2. Importa i namespace richiesti
All’inizio del tuo file C#, aggiungi queste direttive using:
using Aspose.Pdf;
using Aspose.Pdf.Text;
Ora sei pronto per iniziare a cercare testo all’interno dei tuoi file PDF utilizzando l’API di Aspose.PDF.
Cerca testo in PDF utilizzando C#
Con Aspose.PDF for .NET, puoi facilmente cercare parole o frasi specifiche in un PDF, individuare tutte le loro istanze e intraprendere azioni come evidenziarle o estrarne i dettagli.
Segui questi passaggi per eseguire una ricerca testuale di base:
- Carica il file PDF di destinazione utilizzando la classe Document.
- Crea un TextFragmentAbsorber per definire la parola chiave di ricerca.
- Esegui l’assorbitore su tutte le pagine utilizzando il metodo Accept().
- Retrieve all matching text fragments.
- Stampa il numero di partite trovate.
- Scorri e visualizza ogni corrispondenza con il suo numero di pagina.
Il seguente esempio di codice implementa questi passaggi.
// Load the PDF file
Document pdfDocument = new Document("sample.pdf");
// Crea un assorbitore di testo con la parola chiave di ricerca
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("invoice");
// Applica l'assorbitore a tutte le pagine
pdfDocument.Pages.Accept(textFragmentAbsorber);
// Get the matched text fragments
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;
// Stampa quante volte è stata trovata la parola chiave
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");
// Loop attraverso e stampa ogni testo trovato
foreach (TextFragment fragment in textFragments)
{
Console.WriteLine($"Text: {fragment.Text} | Page: {fragment.Page.Number}");
}
Output Example
Found 3 instance(s) of the keyword.
Text: invoice | Page: 1
Text: invoice | Page: 2
Text: invoice | Page: 3
Questo esempio dimostra una semplice ricerca di parole chiave che funziona su tutte le pagine del PDF. Vedrai il testo corrispondente insieme al suo numero di pagina.
Comprendere le classi chiave utilizzate nella ricerca PDF
Per comprendere meglio cosa sta succedendo nel codice, ecco una rapida panoramica delle classi e dei metodi chiave coinvolti:
Document
: Rappresenta l’intero file PDF. Fornisce accesso a pagine, contenuti e struttura.TextFragmentAbsorber
: Trova tutte le occorrenze di una stringa o un modello dato all’interno del PDF. Puoi anche abilitare funzionalità come la ricerca senza distinzione tra maiuscole e minuscole o la ricerca basata su regex.Accept()
: Applica l’assorbitore a ciascuna pagina. Scansiona il documento e raccoglie frammenti corrispondenti.TextFragments
: Una raccolta di tutti i frammenti di testo corrispondenti restituiti dall’assorbitore.TextFragment
: Ogni singolo incontro con dettagli come contenuto, posizione e numero di pagina.
Ricerca senza distinzione tra maiuscole e minuscole e per parole intere utilizzando C#
Quando cerchi contenuti PDF, devi controllare come il sistema trova le corrispondenze per garantire risultati accurati. A volte, desideri ignorare il maiuscolo e il minuscolo ("Fattura" vs. "fattura"), o vuoi corrispondere solo a parole intere—non a corrispondenze parziali all’interno di altre parole.
Aspose.PDF for .NET ti offre gli strumenti per fare entrambi.
Ricerca non sensibile alle maiuscole
Per impostazione predefinita, le ricerche sono sensibili al maiuscolo e al minuscolo. Per ignorare il maiuscolo e il minuscolo, utilizzare TextSearchOptions
con IgnoreCase
abilitato:
// Load the PDF file
Document pdfDocument = new Document("sample.pdf");
// Crea un assorbitore di testo con un'espressione regolare che non fa distinzione tra maiuscole e minuscole.
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("(?i)INVOICE");
// Imposta le opzioni di ricerca testuale per abilitare l'uso delle espressioni regolari
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;
// Applica l'assorbitore a tutte le pagine
pdfDocument.Pages.Accept(textFragmentAbsorber);
// Retrieve the matched text fragments
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;
// Output the number of matches found
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");
// Loop through and display each found text fragment
foreach (TextFragment fragment in textFragments)
{
Console.WriteLine($"Text: {fragment.Text} | Page: {fragment.Page.Number}");
}
Questo troverà sia "Fattura", "fattura", "FATTURA" e altre variazioni.
Corrispondenza Solo di Parole Intere
Puoi anche impedire le corrispondenze parziali. Ad esempio, cercare car
non dovrebbe corrispondere a care
o scar
.
// Load the PDF file
Document pdfDocument = new Document("sample.pdf");
// Crea un assorbitore di testo con un modello di espressione regolare per una corrispondenza di parola intera
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber(@"\bcar\b");
// Imposta le opzioni di ricerca del testo per abilitare l'uso delle espressioni regolari
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;
// Applica l'assorbitore a tutte le pagine
pdfDocument.Pages.Accept(textFragmentAbsorber);
// Recupera i frammenti di testo corrispondenti
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;
// Output the number of matches found
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");
// Ciclo attraverso e visualizza ciascun frammento di testo trovato
foreach (TextFragment fragment in textFragments)
{
Console.WriteLine($"Text: {fragment.Text} | Page: {fragment.Page.Number}");
}
Questo garantisce che solo le istanze autonome della parola `auto” siano corrispondenti.
Cercare con espressioni regolari in PDF
In alcuni casi, è necessario trovare più di una parola specifica: si desidera abbinare modelli come date, indirizzi email o numeri di riferimento. È qui che entrano in gioco le espressioni regolari (regex).
Aspose.PDF for .NET ti consente di utilizzare regex per la ricerca avanzata di testo in qualsiasi parte del tuo documento PDF.
Esempio: Trova tutte le date in un PDF
Diciamo che vuoi trovare tutte le date nel formato dd/mm/yyyy
:
// Carica PDF e cerca testo
Document pdfDocument = new Document("sample.pdf");
// Abilita regex nelle opzioni di ricerca
TextSearchOptions searchOptions = new TextSearchOptions(true)
{
IsRegularExpressionUsed = true
};
// Create absorber with date pattern
TextFragmentAbsorber absorber = new TextFragmentAbsorber(@"\d{2}/\d{2}/\d{4}", searchOptions);
// Applica l'assorbitore alle pagine
pdfDocument.Pages.Accept(absorber);
// Esegui il ciclo e stampa i modelli trovati
foreach (TextFragment fragment in absorber.TextFragments)
{
Console.WriteLine($"Found date: {fragment.Text} on Page {fragment.Page.Number}");
}
Other Useful Patterns:
- Emails:
\b[A-Za-z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b
- Phone Numbers:
\d{3}[-.\s]??\d{3}[-.\s]??\d{4}
- Numeri di fattura:
INV-\d+
Regex amplia le tue capacità di ricerca ben oltre il testo statico, aiutandoti a estrarre dati strutturati da documenti non strutturati.
Cerca ed Estrai Testo con Dettagli di Posizione
A volte, trovare il testo non è sufficiente: potresti aver bisogno di sapere dove appare esattamente nel PDF. Aspose.PDF ti consente di estrarre il numero di pagina, le coordinate e i dettagli di formattazione di ogni corrispondenza.
Questa funzione è particolarmente utile per costruire indici, contrassegnare documenti o creare collegamenti cliccabili.
Esempio: Ottieni la posizione di ogni corrispondenza
// Carica PDF e cerca testo
Document pdfDocument = new Document("sample.pdf");
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
pdfDocument.Pages.Accept(absorber);
// Get matched fragments
TextFragmentCollection fragments = absorber.TextFragments;
// Stampa posizione e testo per ciascuna corrispondenza
foreach (TextFragment fragment in fragments)
{
Console.WriteLine($"Text: {fragment.Text}");
Console.WriteLine($"Page: {fragment.Page.Number}");
Console.WriteLine($"Position - X: {fragment.Position.XIndent}, Y: {fragment.Position.YIndent}");
Console.WriteLine($"Font: {fragment.TextState.Font.FontName}, Size: {fragment.TextState.FontSize}");
Console.WriteLine("------------");
}
Sample Output
Text: invoice
Page: 1
Position - X: 33.482, Y: 708.246
Font: Helvetica, Size: 12
------------
Text: invoice
Page: 2
Position - X: 33.482, Y: 708.246
Font: Helvetica, Size: 12
------------
Text: invoice
Page: 3
Position - X: 33.482, Y: 708.246
Font: Helvetica, Size: 12
------------
Ora sai esattamente dove appare la parola `fattura”, insieme a come è stilizzata. Questo livello di dettaglio apre la porta a elaborazioni avanzate, come annotazioni, tooltip o evidenziazioni dinamiche.
Evidenziare o Sostituire il Testo Trovato
Una volta che hai localizzato un testo specifico in un PDF, puoi fare un passo ulteriore evidenziandolo o addirittura sostituendolo con nuovo contenuto. Aspose.PDF for .NET ti consente di stilizzare o modificare facilmente il testo corrispondente utilizzando l’oggetto TextFragment
.
Cerca e evidenzia il testo nel PDF
Puoi evidenziare visivamente il testo cambiando il suo colore di sfondo e il colore del carattere.
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
pdfDocument.Pages.Accept(absorber);
foreach (TextFragment fragment in absorber.TextFragments)
{
// Highlight by changing text appearance
fragment.TextState.BackgroundColor = Color.Yellow;
fragment.TextState.ForegroundColor = Color.Red;
fragment.TextState.FontStyle = FontStyles.Bold;
}
Questo è utile per rivedere, contrassegnare o generare rapporti annotati.
Trova e Sostituisci Testo
Need to redact or update text in the document? Just replace it directly:
foreach (TextFragment fragment in absorber.TextFragments)
{
fragment.Text = "REDACTED";
}
Puoi persino applicare una nuova formattazione durante la sostituzione:
fragment.TextState.FontSize = 12;
fragment.TextState.Font = FontRepository.FindFont("Arial");
fragment.TextState.ForegroundColor = Color.Black;
Evidenziare e sostituire il testo programmaticamente consente di automatizzare molte attività di elaborazione dei documenti, come la pulizia dei modelli, l’aggiornamento dei contenuti obsoleti o la censura dei dati privati.
Cerca in tutte le pagine o in pagine specifiche
Per impostazione predefinita, Aspose.PDF cerca in tutte le pagine di un PDF. Ma a volte, potresti voler limitare la ricerca a una pagina specifica o a un intervallo di pagine, specialmente quando si lavora con file di grandi dimensioni o quando il contenuto è prevedibile.
Aspose.PDF rende facile fare entrambi.
Cerca in tutte le pagine (predefinito)
Se non specificate una pagina, l’assorbitore cerca automaticamente in ogni pagina.
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
pdfDocument.Pages.Accept(absorber); // Searches all pages
Cerca in una pagina specifica
Puoi anche cercare una singola pagina mirandola direttamente:
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
// Search only on page 2
pdfDocument.Pages[2].Accept(absorber);
Cerca su un intervallo di pagine
Per cercare un intervallo personalizzato (ad esempio, pagine 2 a 4), basta scorrere l’intervallo:
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
// Loop through selected pages
for (int i = 2; i <= 4; i++)
{
pdfDocument.Pages[i].Accept(absorber);
}
Questo approccio ti dà il pieno controllo sulle prestazioni e sulla precisione, particolarmente utile per documenti scansionati o sezionati.
Caso d’uso avanzato: ricerca e oscuramento delle informazioni sensibili
Nei documenti legali, HR o finanziari, è comune nascondere contenuti sensibili—come nomi, ID o numeri di conto—prima di condividerli. Aspose.PDF for .NET rende questo facile combinando la ricerca con le funzionalità di oscuramento.
Puoi cercare termini e poi applicare un overlay nero utilizzando RedactionAnnotation
.
// Carica PDF e cerca testo
Document pdfDocument = new Document("sample.pdf");
// Cerca il nome "John Doe"
TextFragmentAbsorber absorber = new TextFragmentAbsorber("John Doe");
pdfDocument.Pages.Accept(absorber);
// Scorri attraverso i frammenti trovati e redigi
foreach (TextFragment fragment in absorber.TextFragments)
{
// Ottieni la posizione e le dimensioni
Aspose.Pdf.Rectangle rect = new Aspose.Pdf.Rectangle(
fragment.Position.XIndent,
fragment.Position.YIndent,
fragment.Position.XIndent + fragment.Rectangle.Width,
fragment.Position.YIndent + fragment.Rectangle.Height
);
// Create a redaction annotation
RedactionAnnotation redaction = new RedactionAnnotation(fragment.Page, rect)
{
FillColor = Color.Black,
Color = Color.Black
};
// Aggiungi e applica la redazione
fragment.Page.Annotations.Add(redaction);
redaction.Redact();
}
// Save the modified document
pdfDocument.Save("SearchAndRedact.pdf");
Cosa succede
- Il testo target ("John Doe") è stato trovato e coperto con un riquadro nero.
- Questo non è solo visivo: rimuove il contenuto dallo strato PDF, rendendolo irreversibile dal file.
Ottieni una Licenza Gratuita
Ora che hai imparato a cercare, estrarre, evidenziare e oscurare il testo nei PDF utilizzando Aspose.PDF for .NET, è tempo di mettere in pratica quelle conoscenze.
Prova tu stesso: Scarica una licenza temporanea gratuita e inizia a creare i tuoi strumenti PDF intelligenti.
Cerca nel PDF: Risorse gratuite
Vuoi andare oltre la semplice ricerca di testo nei PDF? Esplora tutte le capacità di Aspose.PDF for .NET con queste risorse gratuite, adatte agli sviluppatori:
Guida dello sviluppatore Impara a creare, modificare, convertire e proteggere i file PDF in modo programmatico. Aspose.PDF for .NET Documentation
Strumenti online gratuiti Converti, unisci, dividi e modifica file PDF direttamente nel tuo browser. Aspose Free PDF Tools
Riferimento API Scopri di più su classi, proprietà e metodi disponibili in Aspose.PDF for .NET per accelerare il tuo sviluppo. Aspose.PDF API Reference
Support Forum Fai domande, segnala problemi e ottieni risposte direttamente dagli esperti di Aspose. Aspose Support Forum
Queste risorse sono gratuite e disponibili per aiutarti a ottenere il massimo dal tuo viaggio di sviluppo PDF.
Conclusione
Cercare testo in file PDF è una funzionalità fondamentale per molte applicazioni basate su documenti, che si tratti di estrazione dei dati, audit dei contenuti o preparazione di file per la redazione. Con Aspose.PDF for .NET, puoi facilmente eseguire ricerche di parole chiave, utilizzare espressioni regolari, evidenziare i risultati e persino redigere informazioni sensibili con precisione e controllo. Aspose.PDF offre un’API amichevole per gli sviluppatori che semplifica le operazioni PDF complesse, risparmiando tempo mentre consente potenti automazioni.
Se hai domande o hai bisogno di ulteriore assistenza, ti preghiamo di contattarci sul nostro free support forum.