C#의 PDF에서 바코드 읽기

이전 게시물에 설명된 대로 PDF 문서에 바코드를 생성하고 추가할 수 있습니다. 어떤 경우에는 프로그래밍 방식으로 PDF 문서에 포함된 바코드를 감지하고 읽어야 할 수도 있습니다. 인보이스, 영수증 또는 보고서와 같은 PDF 문서에서 바코드 및 QR 코드 형태로 포함된 정보를 디코딩하는 데 도움이 됩니다. 이 기사에서는 C#을 사용하여 PDF 문서에서 바코드를 읽는 방법을 배웁니다.

이 기사에서는 다음 주제를 다룹니다.

  1. PDF에서 바코드를 읽는 C# API
  2. PDF에서 바코드 읽기
  3. PDF를 이미지로 변환하고 바코드 읽기
  4. PngDevice를 사용하여 PDF에서 바코드 읽기
  5. PDF에서 바코드 추출 및 읽기
  6. PDF에서 바코드 이미지 찾기 및 읽기

PDF에서 바코드를 읽는 C# API

PDF 문서에서 바코드를 읽는 2단계 절차를 따릅니다. 먼저 Aspose.PDF for .NET API를 사용하여 PDF 문서를 로드한 다음 페이지를 래스터 이미지로 렌더링합니다. 그런 다음 Aspose.BarCode for .NET API를 사용하여 렌더링된 이미지에서 바코드를 읽습니다.

API의 DLL 다운로드 또는 NuGet을 사용하여 설치하십시오.

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

C#을 사용하여 PDF에서 바코드 읽기

Aspose.PDF API의 Document 클래스는 PDF 문서를 나타냅니다. API의 ConvertToPNGMemoryStream() 함수는 PDF 페이지를 PNG 메모리 스트림으로 렌더링합니다. Aspose.BarCode API의 BarCodeReader 클래스를 사용하면 ReadBarCodes 작업을 수행하여 바코드를 감지할 수 있습니다. BarCodeResult 클래스는 바코드 유형, 코드 텍스트, 지역 및 기타 매개변수와 같은 감지된 바코드 정보를 저장합니다.

아래 단계에 따라 PDF 문서의 모든 페이지에 포함된 바코드 이미지를 읽을 수 있습니다.

  1. 먼저 Document 클래스를 사용하여 PDF 문서를 로드합니다.
  2. 다음으로 모든 페이지를 반복하고 메모리 스트림에 렌더링합니다.
  3. 그런 다음 스트림 개체를 사용하여 BarCodeReader 클래스의 인스턴스를 만듭니다.
  4. 그런 다음 ReadBarCodes() 메서드를 호출하여 BarCodeResult 개체를 가져옵니다.
  5. 마지막으로 바코드 정보를 보여줍니다.

다음 코드 예제에서는 C#을 사용하여 PDF 문서에서 바코드를 읽는 방법을 보여줍니다.

// 이 코드 예제는 C#을 사용하여 PDF 문서에서 바코드를 읽는 방법을 보여줍니다.
// 문서의 경로
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// PDF 문서 로드
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// 1페이지부터 모든 PDF 페이지를 진행합니다.
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 문서를 다운로드하십시오.

C#을 사용하여 PDF를 이미지로 변환하고 바코드 읽기

PdfConverter 클래스를 사용하여 PDF 페이지를 이미지로 변환하여 PDF 문서에서 바코드를 읽을 수 있습니다. PDF 파일의 각 페이지를 이미지로 변환할 수 있으며 변환된 이미지에서 바코드 정보를 읽습니다.

아래 단계에 따라 변환된 PDF 페이지에서 바코드를 읽을 수 있습니다.

  1. 먼저 Document 클래스를 사용하여 PDF 문서를 로드합니다.
  2. 다음으로 PdfConverter 클래스의 인스턴스를 만듭니다.
  3. 선택적으로 BarcodeOptimization과 같은 렌더링 옵션을 설정합니다.
  4. 그런 다음 이미지 해상도를 설정합니다.
  5. 그런 다음 StartPage 및 EndPage를 지정하여 페이지 범위를 이미지로 렌더링합니다.
  6. 그런 다음 DoConvert() 메서드를 호출하여 선택한 페이지를 이미지로 렌더링합니다.
  7. 다음으로 루프에서 스트리밍할 이미지를 저장합니다.
  8. 그런 다음 스트림 개체를 사용하여 BarCodeReader 클래스의 인스턴스를 만듭니다.
  9. 그런 다음 ReadBarCodes() 메서드를 호출하여 BarCodeResult 개체를 가져옵니다.
  10. 마지막으로 바코드 정보를 보여줍니다.

다음 코드 예제에서는 C#을 사용하여 PDF 페이지를 이미지로 변환하고 바코드를 읽는 방법을 보여줍니다.

// 다음 코드 예제는 PDF 변환기를 사용하여 PDF 페이지를 이미지로 변환하고 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;

// 페이지 해상도 설정
// 300dpi는 표준 해상도입니다.
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("-------------------------------");
    }
}

C#에서 PngDevice를 사용하여 PDF에서 바코드 읽기

이전 방법과 유사한 또 다른 방법이 있습니다. 유일한 차이점은 이 방법에서는 API의 PngDevice 클래스를 사용하여 PDF 문서의 페이지를 이미지로 변환한다는 것입니다. PDF 문서의 페이지를 PNG 이미지로 변환할 수 있습니다.

아래 단계에 따라 변환된 PDF 페이지의 바코드를 PNG 이미지로 읽을 수 있습니다.

  1. 먼저 Document 클래스를 사용하여 PDF 문서를 로드합니다.
  2. 다음으로 PngDevice 클래스의 인스턴스를 만듭니다.
  3. 그런 다음 모든 페이지를 반복하고 Process() 메서드를 호출하여 스트림으로 렌더링합니다.
  4. 다음으로 스트림 개체를 사용하여 BarCodeReader 클래스의 인스턴스를 만듭니다.
  5. 그런 다음 ReadBarCodes() 메서드를 호출하여 BarCodeResult 개체를 가져옵니다.
  6. 마지막으로 바코드 정보를 보여줍니다.

다음 코드 예제에서는 PDF 페이지를 PNG 이미지로 변환하고 C#을 사용하여 바코드를 읽는 방법을 보여줍니다.

// 다음 코드 예제에서는 PngDevice를 사용하여 PDF 페이지를 이미지로 변환하고 C#을 사용하여 바코드를 읽는 방법을 보여줍니다.
// 문서의 경로
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// PDF 문서 로드
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// 300dpi 표준 해상도로 PNG 장치 만들기
Aspose.Pdf.Devices.PngDevice pngDevice = new Aspose.Pdf.Devices.PngDevice(new Aspose.Pdf.Devices.Resolution(300));

// 1페이지부터 모든 PDF 페이지를 진행합니다.
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("-------------------------------");
    }
}

C#을 사용하여 PDF에서 바코드 추출 및 읽기

PdfExtractor 클래스를 사용하여 PDF 페이지에 포함된 바코드 이미지도 인식할 수 있습니다. PDF에서 이미지를 추출할 수 있으며 추출된 이미지에서 바코드 정보를 읽습니다.

아래 단계에 따라 추출된 이미지에서 바코드를 읽을 수 있습니다.

  1. 먼저 PdfExtractor 클래스의 인스턴스를 만듭니다.
  2. 그런 다음 BindPdf() 메서드를 사용하여 입력 PDF 문서를 바인딩합니다.
  3. 그런 다음 이미지 추출을 위한 페이지 범위를 설정합니다.
  4. 다음으로 ExtractImage() 메서드를 호출하여 이미지를 추출합니다.
  5. 그런 다음 루프에서 스트리밍할 이미지를 저장합니다.
  6. 다음으로 스트림 개체를 사용하여 BarCodeReader 클래스의 인스턴스를 만듭니다.
  7. 그런 다음 ReadBarCodes() 메서드를 호출하여 BarCodeResult 개체를 가져옵니다.
  8. 마지막으로 바코드 정보를 보여줍니다.

다음 코드 예제에서는 C#을 사용하여 PDF 문서에서 바코드 이미지를 추출하고 읽는 방법을 보여줍니다.

// 다음 코드 예제는 PdfExtractor를 사용하여 PDF 페이지를 이미지로 변환하고 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("-------------------------------");
  }
}

C#을 사용하여 PDF에서 바코드 이미지 찾기 및 읽기

ImagePlacementAbsorber 클래스를 사용하여 PDF 문서에서 바코드 이미지를 찾고 추출할 수도 있습니다. 이미지 배치 객체의 흡수체 객체를 나타냅니다. 이미지 사용 검색을 수행하고 ImagePlacements 컬렉션을 통해 검색 결과에 대한 액세스를 제공합니다. 이 방법은 원래 해상도로 바코드를 인식하는 데 도움이 됩니다. 벡터 형식을 올바르게 인식하지 못할 수 있습니다.

아래 단계에 따라 PDF 문서에서 바코드를 찾고 읽을 수 있습니다.

  1. 먼저 Document 클래스를 사용하여 PDF 문서를 로드합니다.
  2. 다음으로 ImagePlacementAbsorber 클래스의 인스턴스를 만듭니다.
  3. 그런 다음 루프의 각 페이지에 대해 Visit() 메서드를 호출합니다.
  4. 다음으로 ImagePlacements 컬렉션에서 찾은 모든 이미지를 반복합니다.
  5. 그런 다음 이미지를 메모리 스트림에 저장합니다.
  6. 다음으로 스트림 개체를 사용하여 BarCodeReader 클래스의 인스턴스를 만듭니다.
  7. 그런 다음 ReadBarCodes() 메서드를 호출하여 BarCodeResult 개체를 가져옵니다.
  8. 마지막으로 바코드 정보를 보여줍니다.

다음 코드 예제에서는 C#을 사용하여 PDF에서 바코드 이미지를 찾고 읽는 방법을 보여줍니다.

// 이 코드 예제는 ImagePlacementAbsorber를 사용하여 PDF 문서에서 바코드를 읽는 방법을 보여줍니다.
// 문서의 경로
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();

// 1페이지부터 문서의 모든 PDF 페이지 처리
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("-------------------------------");
        }
    }
}

무료 라이선스 받기

평가 제한 없이 라이브러리를 사용해 보려면 무료 임시 라이센스를 얻으십시오.

결론

이 기사에서는 C#의 PDF 문서에서 바코드를 읽는 방법을 배웠습니다. 또한 PDF 문서에서 이미지를 추출하고 포함된 바코드를 프로그래밍 방식으로 디코딩하는 다양한 접근 방식과 방법을 살펴보았습니다. 또한 Aspose.BarCode 문서Aspose.PDF 문서를 사용하여 API에 대해 자세히 알아볼 수 있습니다. 모호한 점이 있는 경우 포럼에서 언제든지 문의하십시오.

또한보십시오