קרא ברקוד מ-PDF ב-C#

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

המאמר יעסוק בנושאים הבאים:

  1. C# API לקריאת ברקוד מ-PDF
  2. קרא ברקוד מ-PDF
  3. המר PDF לתמונה וקרא ברקודים
  4. קרא ברקודים מ-PDF באמצעות PngDevice
  5. חלץ וקרא ברקוד מ-PDF
  6. מצא וקרא תמונת ברקוד מ-PDF

C# API לקריאת ברקוד מ-PDF

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

אנא הורד את ה-DLL של ה-API או התקן אותו באמצעות NuGet.

PM> Install-Package Aspose.BarCode
PM> Install-Package Aspose.PDF

קרא ברקוד מ-PDF באמצעות C#

המחלקה Document של ה-API של Aspose.PDF מייצגת מסמך PDF. הפונקציה ConvertToPNGMemoryStream() של ה-API מעבדת דף PDF לזרם זיכרון PNG. המחלקה BarCodeReader של ה-API של Aspose.BarCode מאפשרת לנו לבצע פעולות ReadBarCodes כדי לזהות ברקודים. המחלקה BarCodeResult מאחסנת מידע ברקוד שזוהה כגון סוג ברקוד, טקסט קוד, אזור ופרמטרים אחרים.

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

  1. ראשית, טען מסמך PDF באמצעות המחלקה Document.
  2. לאחר מכן, בצע לולאה בין כל הדפים ועבד אותם לזרם הזיכרון.
  3. לאחר מכן, צור מופע של המחלקה BarCodeReader עם אובייקט זרם.
  4. לאחר מכן, קרא למתודה ReadBarCodes() כדי לקבל את האובייקט BarCodeResult.
  5. לבסוף, הצג את פרטי הברקוד.

דוגמא הקוד הבאה מראה כיצד לקרוא ברקוד ממסמך PDF באמצעות C#.

// דוגמה זו מדגימה כיצד לקרוא ברקוד ממסמך PDF באמצעות C#.
// הנתיב למסמך
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// טען מסמך PDF
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// המשך בכל דפי ה-PDF החל מעמוד 1
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
    // עיבוד דף PDF לזרם
    MemoryStream ms = pdfDoc.Pages[i].ConvertToPNGMemoryStream();
    ms.Position = 0;

    // זיהוי ברקודים מהתמונה המעובדת של הדף
    BarCodeReader reader = new BarCodeReader(ms);
    
    // הראה תוצאות
    foreach (BarCodeResult result in reader.ReadBarCodes())
    {
        Console.WriteLine("Codetext found: " + result.CodeText);
        Console.WriteLine("Symbology: " + result.CodeType);
        Console.WriteLine("-------------------------------");
    }
}
Codetext found: Aspose.Barcode Pdf417 Example
Symbology: Pdf417
-------------------------------
Codetext found: Aspose.Barcode QR Example
Symbology: QR
-------------------------------
Codetext found: Aspose.Barcode DataMatrix Example
Symbology: DataMatrix
-------------------------------

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

המרת PDF לתמונה וקריאת ברקודים באמצעות C#

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

אנו יכולים לקרוא ברקודים מדפי PDF שהומרו על ידי ביצוע השלבים המפורטים להלן:

  1. ראשית, טען מסמך PDF באמצעות המחלקה Document.
  2. לאחר מכן, צור מופע של המחלקה PdfConverter.
  3. לחלופין, הגדר אפשרויות רינדור כגון BarcodeOptimization.
  4. לאחר מכן, הגדר את רזולוציית התמונה.
  5. לאחר מכן, ציין StartPage ו-EndPage כדי לעבד מגוון של דפים לתמונות.
  6. לאחר מכן, קרא לשיטת DoConvert() כדי לעבד דפים נבחרים לתמונות.
  7. לאחר מכן, שמור את התמונה כדי להזרים בלולאה.
  8. לאחר מכן, צור מופע של המחלקה BarCodeReader עם אובייקט הזרם.
  9. לאחר מכן, קרא למתודה ReadBarCodes() כדי לקבל את האובייקט BarCodeResult.
  10. לבסוף, הצג את פרטי הברקוד.

דוגמא הקוד הבאה מראה כיצד להמיר דפי PDF לתמונות ולקרוא ברקודים באמצעות C#.

// דוגמא הקוד הבאה מראה כיצד להמיר דפי PDF לתמונות עם PDF Converter ולקרוא ברקודים באמצעות C#.
// הנתיב למסמך
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// טען מסמך PDF
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// אתחול PdfConvertor
Aspose.Pdf.Facades.PdfConverter pdfConverter = new Aspose.Pdf.Facades.PdfConverter(pdfDoc);

// הגדר אופטימיזציה של ברקוד
pdfConverter.RenderingOptions.BarcodeOptimization = true;

// הגדר את רזולוציית העמוד
// 300 dpi היא רזולוציה סטנדרטית
pdfConverter.Resolution = new Aspose.Pdf.Devices.Resolution(300);

// הגדר את כל הדפים לעיבוד לתמונות
pdfConverter.StartPage = 1; //starts from page 1
pdfConverter.EndPage = pdfConverter.Document.Pages.Count;

// עיבוד דפים נבחרים לתמונות
pdfConverter.DoConvert();
while (pdfConverter.HasNextImage())
{
    // עבד את הדף הנוכחי לתמונת זרם זיכרון
    MemoryStream ms = new MemoryStream();
    pdfConverter.GetNextImage(ms, ImageFormat.Png);
    ms.Position = 0;

    // זיהוי ברקודים מהתמונה המעובדת של הדף
    BarCodeReader reader = new BarCodeReader(ms);
    
    // הראה תוצאות
    foreach (BarCodeResult result in reader.ReadBarCodes())
    {
        Console.WriteLine("Codetext found: " + result.CodeText);
        Console.WriteLine("Symbology: " + result.CodeType);
        Console.WriteLine("-------------------------------");
    }
}

קרא ברקודים מ-PDF באמצעות PngDevice ב-C#

הנה עוד שיטה דומה לקודמתה. ההבדל היחיד הוא שבשיטה זו, נמיר את דפי מסמך ה-PDF לתמונות באמצעות המחלקה PngDevice של ה-API. זה מאפשר המרת עמודים של מסמך PDF לתמונות PNG.

אנו יכולים לקרוא ברקודים מדפי PDF שהומרו כתמונות PNG על ידי ביצוע השלבים המפורטים להלן:

  1. ראשית, טען מסמך PDF באמצעות המחלקה Document.
  2. לאחר מכן, צור מופע של המחלקה PngDevice.
  3. לאחר מכן, בצע לולאה בין כל הדפים וקרא לשיטת Process() כדי לרנדר לתוך הזרם.
  4. לאחר מכן, צור מופע של המחלקה BarCodeReader עם אובייקט הזרם.
  5. לאחר מכן, קרא למתודה ReadBarCodes() כדי לקבל את האובייקט BarCodeResult.
  6. לבסוף, הצג את פרטי הברקוד.

דוגמא הקוד הבאה מראה כיצד להמיר דפי PDF לתמונות PNG ולקרוא ברקודים באמצעות C#.

// דוגמא הקוד הבאה מראה כיצד להמיר דפי PDF לתמונות עם PngDevice ולקרוא ברקודים באמצעות C#.
// הנתיב למסמך
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// טען מסמך PDF
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// צור מכשיר PNG עם רזולוציה סטנדרטית של 300 dpi
Aspose.Pdf.Devices.PngDevice pngDevice = new Aspose.Pdf.Devices.PngDevice(new Aspose.Pdf.Devices.Resolution(300));

// המשך בכל דפי ה-PDF החל מעמוד 1
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
    // עיבוד דף PDF לזרם
    MemoryStream ms = new MemoryStream();
    pngDevice.Process(pdfDoc.Pages[i], ms);
    ms.Position = 0;

    // זיהוי ברקוד מהתמונה המעובדת של הדף
    BarCodeReader reader = new BarCodeReader(ms);

    // הראה תוצאות
    foreach (BarCodeResult result in reader.ReadBarCodes())
    {
        Console.WriteLine("Codetext found: " + result.CodeText);
        Console.WriteLine("Symbology: " + result.CodeType);
        Console.WriteLine("-------------------------------");
    }
}

חלץ וקרא ברקוד מ-PDF באמצעות C#

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

אנו יכולים לקרוא ברקודים מהתמונות שחולצו על ידי ביצוע השלבים המפורטים להלן:

  1. ראשית, צור מופע של המחלקה PdfExtractor.
  2. לאחר מכן, אגד את מסמך PDF הקלט באמצעות שיטת BindPdf() .
  3. לאחר מכן, הגדר את טווח העמודים לחילוץ תמונה.
  4. לאחר מכן, קרא למתודה ExtractImage() כדי לחלץ את התמונות.
  5. לאחר מכן, שמור את התמונה כדי להזרים בלולאה.
  6. לאחר מכן, צור מופע של המחלקה BarCodeReader עם אובייקט הזרם.
  7. לאחר מכן, קרא למתודה ReadBarCodes() כדי לקבל את האובייקט BarCodeResult.
  8. לבסוף, הצג את פרטי הברקוד.

דוגמא הקוד הבאה מראה כיצד לחלץ ולקרוא תמונת ברקוד ממסמך PDF באמצעות C#.

// דוגמת הקוד הבאה מראה כיצד להמיר דפי PDF לתמונות עם PdfExtractor ולקרוא ברקודים באמצעות C#.
// הנתיב למסמך
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// כרוך מסמך PDF
Aspose.Pdf.Facades.PdfExtractor pdfExtractor = new Aspose.Pdf.Facades.PdfExtractor();
pdfExtractor.BindPdf(file);

// הגדר טווח עמודים לחילוץ תמונה
pdfExtractor.StartPage = 1;
pdfExtractor.EndPage = 3;

// חלץ את התמונות
pdfExtractor.ExtractImage();

// שמור תמונות כדי להזרים בלולאה
while (pdfExtractor.HasNextImage())
{
  // שמור תמונה לסטרימינג
  MemoryStream imageStream = new MemoryStream();
  pdfExtractor.GetNextImage(imageStream);
  imageStream.Position = 0;

  // זהה את הברקודים מזרם התמונות למעלה
  BarCodeReader reader = new BarCodeReader(imageStream);
  foreach (BarCodeResult result in reader.ReadBarCodes())
  {
      Console.WriteLine("Codetext found: " + result.CodeText);
      Console.WriteLine("Symbology: " + result.CodeType);
      Console.WriteLine("-------------------------------");
  }
}

מצא וקרא תמונות ברקוד מ-PDF באמצעות C#

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

אנו יכולים למצוא ולקרוא ברקודים ממסמכי PDF על ידי ביצוע השלבים המפורטים להלן:

  1. ראשית, טען מסמך PDF באמצעות המחלקה Document.
  2. לאחר מכן, צור מופע של המחלקה ImagePlacementAbsorber.
  3. לאחר מכן, קרא למתודה Visit() עבור כל עמוד בלולאה.
  4. לאחר מכן, בצע לולאה בין כל התמונות שנמצאות באוסף ImagePlacements.
  5. לאחר מכן, שמור את התמונה בזרם הזיכרון.
  6. לאחר מכן, צור מופע של המחלקה BarCodeReader עם אובייקט הזרם.
  7. לאחר מכן, קרא למתודה ReadBarCodes() כדי לקבל את האובייקט BarCodeResult.
  8. לבסוף, הצג את פרטי הברקוד.

דוגמא הקוד הבאה מראה כיצד למצוא ולקרוא תמונות ברקוד מקובץ PDF באמצעות C#.

// דוגמה זו מדגימה כיצד לקרוא ברקוד ממסמך PDF באמצעות ImagePlacementAbsorber.
// הנתיב למסמך
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// טען מסמך PDF
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// אתחול ImagePlacementAbsorber
Aspose.Pdf.ImagePlacementAbsorber imagePlacementAbsorber = new Aspose.Pdf.ImagePlacementAbsorber();

// עבד את כל דפי ה-PDF במסמך החל מעמוד 1
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
    // בקר בדף צור מחלץ תמונה
    imagePlacementAbsorber.Visit(pdfDoc.Pages[i]);

    // חלץ את כל התמונות מדף ה-PDF
    foreach (Aspose.Pdf.ImagePlacement imagePlacement in imagePlacementAbsorber.ImagePlacements)
    {
        // המר תמונה מדף ה-PDF לזרם
        MemoryStream ms = new MemoryStream();
        imagePlacement.Save(ms, ImageFormat.Png);
        ms.Position = 0;

        // זיהוי ברקוד מתמונה שחולצה של הדף
        BarCodeReader reader = new BarCodeReader(ms);

        // הראה תוצאות
        foreach (BarCodeResult result in reader.ReadBarCodes())
        {
            Console.WriteLine("Codetext found: " + result.CodeText);
            Console.WriteLine("Symbology: " + result.CodeType);
            Console.WriteLine("-------------------------------");
        }
    }
}

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

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

סיכום

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

ראה גם