חיפוש בקובץ PDF באמצעות C#

חיפוש טקסט ספציפי ב- PDF הוא משימה נפוצה במערכות ניהול מסמכים, כלים לבדיקה משפטית, מעבדי חשבוניות ודולר נוסף יישומים ארגוניים. בין אם אתה מנסה למצוא מילה חשובה, לחלץ ערכים מסוימים או לטשטש מידע רגיש, אוטומציה של חיפוש ב-PDF יכולה לחסוך הרבה זמן ומאמץ.

בפוסט בלוג הזה, תלמד כיצד לחפש טקסט בקבצי PDF בצורה מתוכנתת באמצעות C#. נלווה אותך צעד אחר צעד דרך התכונות המרכזיות עם דוגמאות קוד מעשיות ב-C#.

מאמר זה מכסה את הנושאים הבאים:

ספריית C# לחיפוש במסמכי PDF

Aspose.PDF for .NET מפשט את תהליך חיפוש הטקסט בקבצי PDF באמצעות C#. הוא מאפשר לך למצוא מילים מדויקות, להתאים תבניות באמצעות ביטויים רגולריים, ואף להדגיש או להחליף טקסט תואם—כל זה עם כמה שורות קוד בלבד. ספרייה עוצמתית זו מספקת תכנים חזקים לתManipulating מסמכי PDF. היא מאפשרת למפתחים ליישם בקלות פונקציות חיפוש. עם Aspose.PDF, אתה יכול במהירות למצוא מילים ב-PDF, מה שהופך אותו לכלי שלא יסולא בפז עבור מפתחי תוכנה.

לפני שאתה מתחיל במציאת טקסט ב-PDF, עליך להקים את הסביבת פיתוח שלך. עקוב אחר הצעדים הבאים כדי להתחיל עם Aspose.PDF for .NET:

1. התקן Aspose.PDF עבור .NET.

הורד אותו מ- releases או התקן אותו דרך NuGet.פתח את פרויקט ה-.NET שלך ב-Visual Studio והרץ את הפקודה הבאה בקונסולת ניהול החבילות של NuGet:

PM> Install-Package Aspose.PDF

הפקודה הזו מוסיפה את ספריית Aspose.PDF לפרויקט שלך כך שתוכל לגשת לתכונות החזקות של עיבוד PDF שלה.

2. ייבוא מרחבי שמות דרושים

בין הקוד בראש קובץ ה-C# שלך, הוסף את ההנחיות השימוש הבאות:

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

עכשיו אתה מוכן להתחיל לחפש טקסט בתוך קבצי ה-PDF שלך באמצעות API של Aspose.PDF.

לחפש טקסט ב-PDF باستخدام C#

עם Aspose.PDF עבור .NET, אתה יכול בקלות לחפש מילים או ביטויים ספציפיים ב-PDF, לאתר את כל המקרים שלהם, ולקחת פעולות כמו להדגיש אותם או לחלץ את הפרטים שלהם.

עקוב אחרי הצעדים הבאים כדי לבצע חיפוש בסיסי בטקסט:

  1. טען את קובץ ה-PDF המטרה בעזרת מחלקת ה-Document.
  2. צור TextFragmentAbsorber כדי להגדיר את מילת החיפוש.
  3. הפעל את הסופג בכל הדפים באמצעות שיטת Accept().
  4. Retrieve all matching text fragments.
  5. Print the number of matches found.
  6. עבור בלולאה ותצוגה של כל תוצאה עם מספר העמוד שלה.

הדוגמה של הקוד הבא מממשת את השלבים הללו.

// Load the PDF file
Document pdfDocument = new Document("sample.pdf");

// Create a text absorber with the search keyword
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("invoice");

// החל את הסופג על כל העמודים
pdfDocument.Pages.Accept(textFragmentAbsorber);

// Get the matched text fragments
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;

// Print how many times the keyword was found
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");

// לולאה דרך והדפס כל טקסט שנמצא
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

דוגמה זו מדגימה חיפוש מילות מפתח פשוטה שעובדת בכל העמודים ב-PDF. תראו את הטקסט התואם יחד עם מספר העמוד שלו.

הבנת המעמדות המרכזיים המשמשים בחיפוש PDF

כדי להבין טוב יותר מה קורה בקוד, הנה סיכום מהיר של המחלקות והשיטות המרכזיות המעורבות:

  • Document: מייצג את כל קובץ ה-PDF. הוא מספק גישה לדפים, תוכן ומבנה.
  • TextFragmentAbsorber: מוצא את כל ההתרחשויות של מיתר או תבנית נתונה בתוך ה-PDF. אתה יכול גם להפעיל תכונות כמו חיפוש שאינו תלוי רישיות או חיפוש מבוסס רג’קס.
  • Accept(): מפעיל את הסופג על כל עמוד. הוא סורק דרך המסמך ואוסף קטעים תואמים.
  • TextFragments: אוסף של כל קטעי הטקסט התואמים שהוחזרו על ידי הסופח.
  • TextFragment: כל התאמה בודדת עם פרטים כמו תוכן, מיקום, ומספר עמוד.

חיפוש שאינו רגיש לאותיות גדולות ומילים שלמות באמצעות C#

כשאתה מחפש תוכן PDF, אתה צריך לשלוט איך המערכת מוצאת התאמות כדי להבטיח תוצאות מדויקות. לפעמים, אתה רוצה להתעלם מן רישיות האותיות (“Invoice” נגד “invoice”), או שאתה רוצה להתאים מילים מלאות בלבד—לא התאמות חלקיות בתוך מילים אחרות.

Aspose.PDF עבור .NET נותן לך את הכלים לעשות את שניהם.

חיפוש שאינו רגיש לאותיות גדולות/קטנות

ברירת מחדל, חיפושים רגישים להבדלי גדלים. כדי להתעלם מהגודל של האותיות, השתמש ב TextSearchOptions עם IgnoreCase מופעל:

// Load the PDF file
Document pdfDocument = new Document("sample.pdf");

// צור סופג טקסט עם ביטוי רגולרי שאינו רגיש לאותיות גדולות וקטנות
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("(?i)INVOICE");

// הגדר אפשרויות חיפוש טקסט כדי לאפשר שימוש בביטויים רגולריים
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;

// החל את הסופג על כל הדפים
pdfDocument.Pages.Accept(textFragmentAbsorber);

// שחזר את קטעי הטקסט התואמים
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;

// Output the number of matches found
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");

// לולא על ידי ו להציג כל קטע טקסט שנמצא
foreach (TextFragment fragment in textFragments)
{
    Console.WriteLine($"Text: {fragment.Text} | Page: {fragment.Page.Number}");
}

זה ימצא גם "Invoice", "invoice", "INVOICE" וכן וריאציות אחרות.

התאם מילים שלמות בלבד

אתה יכול גם למנוע התאמות חלקיות. לדוגמה, חיפוש עבור car לא צריך להתאים לcare או לscar.

// Load the PDF file
Document pdfDocument = new Document("sample.pdf");

// צור סופג טקסט עם דפוס ביטוי רגיל להתאמת מילה שלמה
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber(@"\bcar\b");

// הגדר אפשרויות חיפוש טקסט כדי לאפשר שימוש בביטויים רגילים
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;

// החלו את הסופג על כל הדפים
pdfDocument.Pages.Accept(textFragmentAbsorber);

// שחזר את קטעי הטקסט המותאמים
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;

// Output the number of matches found
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");

// חזור דרך והצג כל קטע טקסט שנמצא
foreach (TextFragment fragment in textFragments)
{
    Console.WriteLine($"Text: {fragment.Text} | Page: {fragment.Page.Number}");
}

זה מבטיח שמתאימים רק מקרים עצמאים של המילה “רכב”.

חיפוש עם ביטויים רגולריים ב-PDF

במקרים מסוימים, אתה צריך למצוא יותר ממילה ספציפית—אתה רוצה להתאים דפוסים כמו תאריכים, כתובת דוא"ל או מספרי הפנייה. כאן נכנסות לפעולה ביטויי רגולציה (regex).

Aspose.PDF עבור .NET מאפשרת לך להשתמש ב-regex לחיפוש טקסט מתקדם בכל חלק של מסמך ה-PDF שלך.

דוגמה: מצא את כל התאריכים בקובץ PDF

נניח שתרצה למצוא את כל התאריכים בפורמט dd/mm/yyyy:

// טען PDF וחפש טקסט
Document pdfDocument = new Document("sample.pdf");

// אפשר ביטויים רגולריים באופציות חיפוש
TextSearchOptions searchOptions = new TextSearchOptions(true)
{
    IsRegularExpressionUsed = true
};

// Create absorber with date pattern
TextFragmentAbsorber absorber = new TextFragmentAbsorber(@"\d{2}/\d{2}/\d{4}", searchOptions);

// מנעול לספוג לעמודים
pdfDocument.Pages.Accept(absorber);

// לולאה והדפסה של דפוסים שנמצאו
foreach (TextFragment fragment in absorber.TextFragments)
{
    Console.WriteLine($"Found date: {fragment.Text} on Page {fragment.Page.Number}");
}

דפוסים שימושיים נוספים:

  • 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}
  • מספרי חשבוניות: INV-\d+

Regex מרחיב את יכולות החיפוש שלך הרבה מעבר לטקסט סטטי, ומסייע לך לחלץ נתונים מובנים ממסמכים שאינם מובנים.

חפש והציג טקסט עם פרטי מיקום

לפעמים, מציאת הטקסט אינה מספיקה—אתה עשוי להזדקק לדעת היכן בדיוק הוא מופיע ב-PDF. Aspose.PDF מאפשר לך לחלץ את מספר העמוד, קואורדינטות, ופרטי עיצוב של כל התאמה.

תכונה זו מועילה במיוחד לבניית אינדקסים, תיוג מסמכים, או יצירת קישורים שניתן ללחוץ עליהם.

דוגמה: קבל את מיקום של כל התאמות

// טען PDF וחפש טקסט
Document pdfDocument = new Document("sample.pdf");
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
pdfDocument.Pages.Accept(absorber);

// Get matched fragments
TextFragmentCollection fragments = absorber.TextFragments;

// הדפס מיקום וטקסט עבור כל תוצאה
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
------------

אתה עכשיו יודע בדיוק היכן המילה `invoice” מופיעה, יחד עם איך שהיא מעוצבת. רמת הפרטיות הזאת פותחת את הדלת לעיבוד מתקדם, כגון anotations, tooltips, או הדגשות דינמיות.

הדגשה או החלפת טקסט שנמצא

לאחר שמצאת טקסט ספציפי ב-PDF, אתה יכול לקחת את זה צעד קדימה על ידי הדגשתו או אפילו החלפתו בתוכן חדש. Aspose.PDF עבור .NET מאפשר לך לעצב או לשנות את הטקסט התואם בקלות באמצעות אובייקט ה- TextFragment.

לחפש ולהדגיש טקסט ב-PDF

אתה יכול להדגיש חזותית את הטקסט על ידי שינוי הצבע של הרקע והגופן שלו.

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;
}

זה שימושי לסקירה, תיוג, או יצירת דוחות עם הערות.

מצא והחלף טקסט

צריך לערוך או לעדכן טקסט במסמך? פשוט החלף אותו ישירות:

foreach (TextFragment fragment in absorber.TextFragments)
{
    fragment.Text = "REDACTED";
}

אתה אפילו יכול להחיל עיצוב חדש בזמן החלפה:

fragment.TextState.FontSize = 12;
fragment.TextState.Font = FontRepository.FindFont("Arial");
fragment.TextState.ForegroundColor = Color.Black;

הדגשה והחלפת טקסט בצורה תוכנתית מאפשרת לך לאוטומט הרבה משימות עיבוד מסמכים, כמו ניקוי תבניות, עדכון תוכן מיושן, או צנזור נתונים פרטיים.

חפש בכל הדפים או בדפים ספציפיים

ברירת מחדל, Aspose.PDF מחפש בכל הדפים ב-PDF. אבל לפעמים, אתה עשוי לרצות להגביל את החיפוש לדף ספציפי או לטווח דפים—במיוחד בעת עבודה עם קבצים גדולים או כאשר התוכן צפוי.

Aspose.PDF מקלה על כך בשני המקרים.

חפש בכל הדפים (ברירת מחדל)

אם אינך מציין דף, המייבש מחפש אוטומטית כל דף.

TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
pdfDocument.Pages.Accept(absorber); // Searches all pages

חפש בעמוד ספציפי

אתה יכול גם לחפש עמוד בודד על ידי פנייה ישירה אליו:

TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");

// Search only on page 2
pdfDocument.Pages[2].Accept(absorber);

חפש בטווח של דפים

כדי לחפש טווח מותאם אישית (למשל, עמודים 2 עד 4), פשוט חזור על הטווח:

TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");

// Loop through selected pages
for (int i = 2; i <= 4; i++)
{
    pdfDocument.Pages[i].Accept(absorber);
}

גישה זו מספקת לך שליטה מלאה על ביצועים ודיוק, במיוחד מועילה למסמכים סרוקים או חתוכים.

מקרה שימוש מתקדם: חיפוש ומחיקה של מידע רגיש

במסמכים משפטיים, משאבי אנוש או פיננסיים, זה נפוץ להסתיר תוכן רגיש—כמו שמות, מזהים או מספרי חשבון—לפני שיתוף. Aspose.PDF עבור .NET מקלה על כך על ידי שילוב חיפוש עם תכונות מחיקה.

אתה יכול לחפש מונחים ואז להפעיל שכבת הסתרה שחורה באמצעות RedactionAnnotation.

// טען PDF וחפש טקסט
Document pdfDocument = new Document("sample.pdf");

// חפש את השם "ג'ון דו"
TextFragmentAbsorber absorber = new TextFragmentAbsorber("John Doe");
pdfDocument.Pages.Accept(absorber);

// עבור דרך מקטעים שנמצאו ומחק אותם
foreach (TextFragment fragment in absorber.TextFragments)
{
    // קבל מיקום וממדים
    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
    };

    // Add and apply redaction
    fragment.Page.Annotations.Add(redaction);
    redaction.Redact();
}
// Save the modified document
pdfDocument.Save("SearchAndRedact.pdf");

מה קורה

  • הטקסט המטרה ("John Doe") נמצא ומכוסה בקופסה שחורה.
  • זה לא רק חזותי—זה מסיר את התוכן משכבת ה-PDF, מה שהופך אותו לבלתי בר השגה מהקובץ.

קבל רישיון חינם

עכשיו שלמדת איך לחפש, לחלץ, להדגיש ולערוך טקסט ב-PDFים בעזרת Aspose.PDF עבור .NET, הגיע הזמן להפעיל את הידע הזה.

נסה את זה בעצמך: הורד רישיון זמני בחינם והתחל לבנות את כלי ה-PDF החכמים שלך.

חפש ב-PDF: משאבים חינמיים

רוצים ללכת מעבר לחיפוש טקסט ב-PDFים? גלו את כל האפשרויות של Aspose.PDF עבור .NET עם המשאבים החינמיים והידידותיים למפתחים האלה:

  • מדריך המפתחים למד כיצד ליצור, לשנות, להמיר ולהגן על קבצי PDF בצורה תכנותית. Aspose.PDF for .NET Documentation

  • כלים חינמיים באינטרנט ערוך, ממזג, מחלק וערוך קבצי PDF ישירות בדפדפן שלך. Aspose Free PDF Tools

  • מחליף API למד עוד על קלאסים, תכונות, ושיטות זמינות ב Aspose.PDF עבור .NET כדי להאיץ את הפיתוח שלך. Aspose.PDF API Reference

  • פורום תמיכה שאל שאלות, דווח על בעיות, וקבל תשובות ישירות ממומחי Aspose. Aspose Support Forum

המשאבים הללו הם בחינם וזמינים כדי לעזור לך להפיק את המרב מנסיעת הפיתוח של ה-PDF שלך.

מסקנה

מחפשים טקסט בקבצי PDF הוא תכונה חיונית עבור הרבה אפליקציות מבוססות מסמכים—בין אם אתם שולפים נתונים, בודקים תוכן, או מכינים קבצים עבור עריכה. עם Aspose.PDF עבור .NET, אתם יכולים בקלות לבצע חיפושי מילות מפתח, להשתמש בביטויים רגולריים, להדגיש תוצאות, ואפילו לערוך מידע רגיש בדיוק ושליטה. Aspose.PDF מציעה API ידידותי למפתחים שמפשטת פעולות PDF מורכבות—חוסכת לכם זמן ומאפשרת אוטומציה עוצמתית.

אם יש לך שאלות או אתה זקוק לעזרה נוספת, אנא אל תהסס לפנות אלינו בפורום התמיכה free support forum.

ראה גם