อ่านบาร์โค้ดจาก PDF ใน C#

เราสามารถสร้างและเพิ่มบาร์โค้ดให้กับเอกสาร PDF ตามที่อธิบายไว้ใน โพสต์ก่อนหน้า ของฉัน ในบางกรณี เราอาจต้องตรวจหาและอ่านบาร์โค้ดที่ฝังอยู่ในเอกสาร PDF โดยทางโปรแกรม ช่วยในการถอดรหัสข้อมูลที่ฝังอยู่ในรูปของบาร์โค้ดและคิวอาร์โค้ดจากเอกสาร 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 ของ Aspose.PDF API แสดงถึงเอกสาร PDF ฟังก์ชัน ConvertToPNGMemoryStream() ของ API แสดงผลหน้า PDF เป็นสตรีมหน่วยความจำ PNG คลาส BarCodeReader ของ Aspose.BarCode API ช่วยให้เราสามารถดำเนินการ 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 Convertor และอ่านบาร์โค้ดโดยใช้ 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 ในกรณีที่มีความคลุมเครือ โปรดติดต่อเราได้ที่ ฟอรัม

ดูสิ่งนี้ด้วย