Αναζήτηση κανονικής έκφρασης σε αρχείο PDF

Εισαγωγή

Όταν ασχολείστε με μεγάλα έγγραφα PDF, μπορεί να βρείτε τον εαυτό σας να αναζητά συγκεκριμένα μοτίβα ή μορφές όπως ημερομηνίες, αριθμούς τηλεφώνου ή άλλα δομημένα δεδομένα. Η μη αυτόματη επεξεργασία του PDF μπορεί να είναι κουραστική, σωστά; Εδώ είναι χρήσιμη η χρήση μιας κανονικής έκφρασης (regex). Σε αυτό το σεμινάριο, θα διερευνήσουμε πώς να αναζητήσετε ένα μοτίβο τυπικής έκφρασης σε ένα αρχείο PDF χρησιμοποιώντας το Aspose.PDF για .NET. Αυτός ο οδηγός θα σας καθοδηγήσει σε κάθε βήμα, ώστε να μπορείτε να τον εφαρμόσετε εύκολα στην εφαρμογή σας .NET.

Προαπαιτούμενα

Πριν προχωρήσουμε στο βήμα προς βήμα σεμινάριο, ας δούμε τι πρέπει να έχετε στη θέση του:

  • Aspose.PDF για .NET: Πρέπει να έχετε εγκαταστήσει αυτήν τη βιβλιοθήκη. Εάν δεν το έχετε εγκαταστήσει ακόμα, μπορείτεκατεβάστε το εδώ.
  • IDE: Visual Studio ή οποιοδήποτε άλλο IDE συμβατό με C#.
  • .NET Framework: Βεβαιωθείτε ότι το έργο σας έχει ρυθμιστεί με την κατάλληλη έκδοση του .NET Framework.
  • Βασικές γνώσεις C#: Αν και αυτός ο οδηγός είναι λεπτομερής, μια βασική κατανόηση της C# θα είναι χρήσιμη.

Εισαγωγή πακέτων

Αρχικά, θα χρειαστεί να εισαγάγετε τους απαραίτητους χώρους ονομάτων από το Aspose.PDF για .NET στο έργο σας. Αυτά τα πακέτα είναι απαραίτητα για την εργασία με αρχεία PDF και την εκτέλεση εργασιών αναζήτησης χρησιμοποιώντας regex.

using Aspose.Pdf;
using Aspose.Pdf.Text;
using System;

Ας αναλύσουμε τη διαδικασία αναζήτησης κανονικών εκφράσεων σε ένα αρχείο PDF χρησιμοποιώντας το Aspose.PDF σε πολλά βήματα.

Βήμα 1: Ρυθμίστε τον Κατάλογο Εγγράφων

Κάθε λειτουργία PDF ξεκινά με τον καθορισμό της τοποθεσίας του εγγράφου σας. Θα χρειαστεί να ορίσετε τη διαδρομή προς το αρχείο PDF, η οποία είναι αποθηκευμένη στοdataDir μεταβλητός.

Βήμα 1.1: Καθορίστε τη διαδρομή του εγγράφου σας

// Καθορίστε τη διαδρομή προς το έγγραφο PDF σας
string dataDir = "YOUR DOCUMENT DIRECTORY";

Αντικαθιστώ"YOUR DOCUMENT DIRECTORY" με την πραγματική διαδρομή προς το αρχείο PDF σας. Αυτό το βήμα είναι κρίσιμο, καθώς οδηγεί τον κώδικά σας στο αρχείο με το οποίο θέλετε να εργαστείτε.

Βήμα 1.2: Ανοίξτε το έγγραφο PDF

Στη συνέχεια, πρέπει να ανοίξετε το έγγραφο PDF χρησιμοποιώντας τοDocument τάξη από το Aspose.PDF.

// Ανοίξτε το έγγραφο
Document pdfDocument = new Document(dataDir + "SearchRegularExpressionAll.pdf");

Εδώ,"SearchRegularExpressionAll.pdf" είναι το δείγμα αρχείου PDF όπου θα πραγματοποιήσουμε την αναζήτηση regex.

Βήμα 2: Ρυθμίστε το TextFragmentAbsorber

Εδώ συμβαίνει η μαγεία! ΟTextFragmentAbsorber Η class βοηθά στη λήψη τμημάτων κειμένου που ταιριάζουν με ένα συγκεκριμένο μοτίβο ή κανονική έκφραση.

Ας ρυθμίσουμε τον απορροφητή για να βρίσκουμε σχέδια χρησιμοποιώντας ένα regex. Σε αυτήν την περίπτωση, αναζητούμε ένα μοτίβο ετών όπως “1999-2000”.

// Δημιουργήστε αντικείμενο TextAbsorber για να βρείτε όλες τις φράσεις που ταιριάζουν με την κανονική έκφραση
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("\\d{4}-\\d{4}"); // Όπως το 1999-2000

Η κανονική έκφραση\\d{4}-\\d{4} αναζητά ένα μοτίβο τεσσάρων ψηφίων ακολουθούμενο από παύλα και άλλα τέσσερα ψηφία, το οποίο είναι χαρακτηριστικό για τα εύρη ετών.

Βήμα 3: Ενεργοποιήστε την Αναζήτηση κανονικών εκφράσεων

Για να διασφαλίσετε ότι η λειτουργία αναζήτησης ερμηνεύει το μοτίβο ως κανονική έκφραση, πρέπει να διαμορφώσετε τις επιλογές αναζήτησης χρησιμοποιώντας τοTextSearchOptions τάξη.

// Ορίστε την επιλογή αναζήτησης κειμένου για να καθορίσετε τη χρήση κανονικών εκφράσεων
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;

Ρύθμιση τουTextSearchOptions ναtrue διασφαλίζει ότι ο απορροφητής χρησιμοποιεί αναζήτηση βασισμένη σε κανονικές εκφράσεις αντί για απλό κείμενο.

Βήμα 4: Αποδεχτείτε τον απορροφητή κειμένου

Σε αυτό το στάδιο, εφαρμόζετε τον απορροφητή κειμένου στο έγγραφο PDF, ώστε να μπορεί να εκτελέσει τη λειτουργία αναζήτησης. Αυτό γίνεται καλώντας τοAccept μέθοδος στοPages αντικείμενο του εγγράφου PDF.

// Αποδεχτείτε τον απορροφητήρα για όλες τις σελίδες
pdfDocument.Pages.Accept(textFragmentAbsorber);

Αυτή η εντολή επεξεργάζεται όλες τις σελίδες του PDF, αναζητώντας οποιοδήποτε κείμενο ταιριάζει με την κανονική έκφραση.

Βήμα 5: Εξαγωγή και εμφάνιση των αποτελεσμάτων

Αφού ολοκληρωθεί η αναζήτηση, πρέπει να εξαγάγετε τα αποτελέσματα. ΟTextFragmentAbsorber αποθηκεύει αυτά τα αποτελέσματα σε αTextFragmentCollection. Μπορείτε να κάνετε κύκλο σε αυτή τη συλλογή για να αποκτήσετε πρόσβαση και να εμφανίσετε κάθε αντίστοιχο τμήμα κειμένου.

Βήμα 5.1: Ανάκτηση των εξαγόμενων τμημάτων κειμένου

// Λάβετε τα εξαγόμενα τμήματα κειμένου
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;

Τώρα που έχετε συγκεντρώσει τα θραύσματα, ήρθε η ώρα να τα περιηγηθείτε και να εμφανίσετε τις σχετικές λεπτομέρειες, όπως το κείμενο, τη θέση, τις λεπτομέρειες της γραμματοσειράς και άλλα.

Βήμα 5.2: Κάντε βρόχο μέσα από τα θραύσματα

// Περιηγηθείτε στα θραύσματα
foreach (TextFragment textFragment in textFragmentCollection)
{
    Console.WriteLine("Text : {0} ", textFragment.Text);
    Console.WriteLine("Position : {0} ", textFragment.Position);
    Console.WriteLine("XIndent : {0} ", textFragment.Position.XIndent);
    Console.WriteLine("YIndent : {0} ", textFragment.Position.YIndent);
    Console.WriteLine("Font - Name : {0}", textFragment.TextState.Font.FontName);
    Console.WriteLine("Font - IsAccessible : {0} ", textFragment.TextState.Font.IsAccessible);
    Console.WriteLine("Font - IsEmbedded : {0} ", textFragment.TextState.Font.IsEmbedded);
    Console.WriteLine("Font - IsSubset : {0} ", textFragment.TextState.Font.IsSubset);
    Console.WriteLine("Font Size : {0} ", textFragment.TextState.FontSize);
    Console.WriteLine("Foreground Color : {0} ", textFragment.TextState.ForegroundColor);
}

Για το καθέναTextFragment, εκτυπώνονται οι λεπτομέρειες όπως το μέγεθος γραμματοσειράς, το όνομα της γραμματοσειράς και η θέση. Αυτό όχι μόνο βοηθά στην εύρεση του κειμένου, αλλά σας δίνει επίσης την ακριβή μορφοποίηση και τη θέση του.

Σύναψη

Ορίστε το! Η αναζήτηση μοτίβων σε ένα αρχείο PDF χρησιμοποιώντας κανονικές εκφράσεις είναι απίστευτα ισχυρή, ειδικά για δομημένο κείμενο όπως ημερομηνίες, αριθμούς τηλεφώνου και παρόμοια μοτίβα. Το Aspose.PDF για .NET παρέχει έναν απρόσκοπτο τρόπο για να εκτελέσετε τέτοιες λειτουργίες με ευκολία. Τώρα μπορείτε να αξιοποιήσετε τη δύναμη των κανονικών εκφράσεων για να αυτοματοποιήσετε την αναζήτηση κειμένου PDF, κάνοντας τη ροή εργασίας σας πιο αποτελεσματική.

Συχνές ερωτήσεις

Μπορώ να αναζητήσω πολλά μοτίβα σε ένα PDF;

Ναι, μπορείτε να εκτελέσετε πολλάTextFragmentAbsorber αντικείμενα, το καθένα με διαφορετικά μοτίβα regex, στο ίδιο PDF.

Υποστηρίζει το Aspose.PDF την αναζήτηση μοτίβων χωρίς διάκριση πεζών-κεφαλαίων;

Απολύτως! Μπορείτε να διαμορφώσετε τοTextSearchOptions για να γίνει η αναζήτηση χωρίς διάκριση πεζών-κεφαλαίων.

Υπάρχει όριο στο μέγεθος του PDF στο οποίο μπορώ να αναζητήσω;

Δεν υπάρχει αυστηρό όριο, αλλά η απόδοση μπορεί να διαφέρει ανάλογα με το μέγεθος του PDF και την πολυπλοκότητα του μοτίβου regex.

Μπορώ να επισημάνω το κείμενο που βρέθηκε στο PDF;

Ναι, το Aspose.PDF σάς επιτρέπει να επισημάνετε ή ακόμα και να αντικαταστήσετε το κείμενο μόλις το βρείτε χρησιμοποιώντας τον απορροφητή.

Πώς μπορώ να χειριστώ τα σφάλματα εάν το μοτίβο δεν βρεθεί;

Εάν δεν βρεθούν αντιστοιχίες, τοTextFragmentCollection θα είναι άδειο. Μπορείτε να χειριστείτε αυτό το σενάριο με έναν απλό έλεγχο πριν από την αναζήτηση των αποτελεσμάτων.