Leia o código de barras do PDF em C#

Podemos gerar e adicionar códigos de barras a documentos PDF conforme descrito no meu post anterior. Em certos casos, podemos precisar detectar e ler os códigos de barras incorporados em documentos PDF programaticamente. Ele ajuda a decodificar informações incorporadas na forma de códigos de barras e códigos QR de documentos PDF, como faturas, recibos ou relatórios. Neste artigo, aprenderemos a ler um código de barras de um documento PDF usando C#.

O artigo deve abordar os seguintes tópicos:

  1. API C# para ler código de barras de PDF
  2. Leia o código de barras do PDF
  3. Converter PDF em imagem e ler códigos de barras
  4. Leia códigos de barras de PDF usando PngDevice
  5. Extrair e ler código de barras do PDF
  6. Localizar e ler a imagem do código de barras do PDF

API C# para ler código de barras de PDF

Seguiremos um procedimento de duas etapas para ler códigos de barras de documentos PDF. Primeiramente, usaremos a API Aspose.PDF for .NET para carregar um documento PDF, depois renderizaremos suas páginas para imagens raster. Depois disso, leremos o código de barras das imagens renderizadas usando a API Aspose.BarCode for .NET.

Por favor, faça o download da DLL da API ou instale-a usando NuGet.

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

Leia o código de barras do PDF usando C#

A classe Document da API Aspose.PDF representa um documento PDF. A função ConvertToPNGMemoryStream() da API renderiza uma página PDF em um fluxo de memória PNG. A classe BarCodeReader da API Aspose.BarCode nos permite realizar operações ReadBarCodes para detectar códigos de barras. A classe BarCodeResult armazena informações de código de barras detectadas, como tipo de código de barras, texto de código, região e outros parâmetros.

Podemos ler imagens de código de barras incorporadas em qualquer uma das páginas do documento PDF seguindo as etapas abaixo:

  1. Primeiramente, carregue um documento PDF usando a classe Document.
  2. Em seguida, percorra todas as páginas e renderize-as no fluxo de memória.
  3. Em seguida, crie uma instância da classe BarCodeReader com um objeto de fluxo.
  4. Depois disso, chame o método ReadBarCodes() para obter o objeto BarCodeResult.
  5. Por fim, mostre as informações do código de barras.

O exemplo de código a seguir mostra como ler um código de barras de um documento PDF usando C#.

// Este exemplo de código demonstra como ler um código de barras de um documento PDF usando C#.
// O caminho para o documento
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// Carregar um documento PDF
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// Prossiga todas as páginas do PDF a partir da página 1
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
    // Renderizar página PDF para o fluxo
    MemoryStream ms = pdfDoc.Pages[i].ConvertToPNGMemoryStream();
    ms.Position = 0;

    // Reconhecer códigos de barras da imagem renderizada da página
    BarCodeReader reader = new BarCodeReader(ms);
    
    // Mostrar resultados
    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
-------------------------------

Por favor faça o download do documento PDF de entrada com códigos de barras usado nesta postagem do blog.

Converter PDF em imagem e ler códigos de barras usando C#

Podemos ler códigos de barras do documento PDF convertendo páginas PDF em imagens usando a classe PdfConverter. Permite converter cada página de um arquivo PDF em uma imagem e, em seguida, leremos as informações do código de barras da imagem convertida.

Podemos ler códigos de barras de páginas PDF convertidas seguindo as etapas abaixo:

  1. Primeiramente, carregue um documento PDF usando a classe Document.
  2. Em seguida, crie uma instância da classe PdfConverter.
  3. Opcionalmente, defina opções de renderização como BarcodeOptimization.
  4. Em seguida, defina a resolução da imagem.
  5. Em seguida, especifique StartPage e EndPage para renderizar um intervalo de páginas em imagens.
  6. Em seguida, chame o método DoConvert() para renderizar as páginas selecionadas em imagens.
  7. Em seguida, salve a imagem para transmitir em um loop.
  8. Em seguida, crie uma instância da classe BarCodeReader com o objeto stream.
  9. Depois disso, chame o método ReadBarCodes() para obter o objeto BarCodeResult.
  10. Por fim, mostre as informações do código de barras.

O exemplo de código a seguir mostra como converter páginas PDF em imagens e ler códigos de barras usando C#.

// O exemplo de código a seguir mostra como converter páginas PDF em imagens com o PDF Converter e ler códigos de barras usando C#.
// O caminho para o documento
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// Carregar um documento PDF
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// Inicializar um PDFConvertor
Aspose.Pdf.Facades.PdfConverter pdfConverter = new Aspose.Pdf.Facades.PdfConverter(pdfDoc);

// Definir otimização de código de barras
pdfConverter.RenderingOptions.BarcodeOptimization = true;

// Definir resolução da página
// 300 dpi é a resolução padrão
pdfConverter.Resolution = new Aspose.Pdf.Devices.Resolution(300);

// Defina todas as páginas para renderizar em imagens
pdfConverter.StartPage = 1; //starts from page 1
pdfConverter.EndPage = pdfConverter.Document.Pages.Count;

// Renderize as páginas selecionadas nas imagens
pdfConverter.DoConvert();
while (pdfConverter.HasNextImage())
{
    // Renderizar a página atual para a imagem de fluxo de memória
    MemoryStream ms = new MemoryStream();
    pdfConverter.GetNextImage(ms, ImageFormat.Png);
    ms.Position = 0;

    // Reconhecer códigos de barras da imagem renderizada da página
    BarCodeReader reader = new BarCodeReader(ms);
    
    // Mostrar resultados
    foreach (BarCodeResult result in reader.ReadBarCodes())
    {
        Console.WriteLine("Codetext found: " + result.CodeText);
        Console.WriteLine("Symbology: " + result.CodeType);
        Console.WriteLine("-------------------------------");
    }
}

Leia códigos de barras de PDF usando PngDevice em C#

Aqui vai outro método semelhante ao anterior. A única diferença é que neste método vamos converter as páginas do documento PDF em imagens usando a classe PngDevice da API. Permite converter páginas do documento PDF em imagens PNG.

Podemos ler códigos de barras de páginas PDF convertidas como imagens PNG seguindo as etapas abaixo:

  1. Primeiramente, carregue um documento PDF usando a classe Document.
  2. Em seguida, crie uma instância da classe PngDevice.
  3. Em seguida, percorra todas as páginas e chame o método Process() para renderizar no fluxo.
  4. Em seguida, crie uma instância da classe BarCodeReader com o objeto stream.
  5. Depois disso, chame o método ReadBarCodes() para obter o objeto BarCodeResult.
  6. Por fim, mostre as informações do código de barras.

O exemplo de código a seguir mostra como converter páginas PDF em imagens PNG e ler códigos de barras usando C#.

// O exemplo de código a seguir mostra como converter páginas PDF em imagens com PngDevice e ler códigos de barras usando C#.
// O caminho para o documento
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// Carregar um documento PDF
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// Crie um dispositivo PNG com resolução padrão de 300 dpi
Aspose.Pdf.Devices.PngDevice pngDevice = new Aspose.Pdf.Devices.PngDevice(new Aspose.Pdf.Devices.Resolution(300));

// Prossiga todas as páginas do PDF a partir da página 1
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
    // Renderizar página PDF para o fluxo
    MemoryStream ms = new MemoryStream();
    pngDevice.Process(pdfDoc.Pages[i], ms);
    ms.Position = 0;

    // Reconhecer o código de barras da imagem renderizada da página
    BarCodeReader reader = new BarCodeReader(ms);

    // Mostrar resultados
    foreach (BarCodeResult result in reader.ReadBarCodes())
    {
        Console.WriteLine("Codetext found: " + result.CodeText);
        Console.WriteLine("Symbology: " + result.CodeType);
        Console.WriteLine("-------------------------------");
    }
}

Extraia e leia o código de barras do PDF usando C#

Também podemos reconhecer imagens de código de barras incorporadas em páginas PDF usando a classe PdfExtractor. Ele permite extrair imagens do PDF e, em seguida, leremos as informações do código de barras da imagem extraída.

Podemos ler códigos de barras das imagens extraídas seguindo os passos abaixo:

  1. Primeiramente, crie uma instância da classe PdfExtractor.
  2. Em seguida, vincule o documento PDF de entrada usando o método BindPdf().
  3. Em seguida, defina o intervalo de páginas para extração de imagem.
  4. Em seguida, chame o método ExtractImage() para extrair as imagens.
  5. Em seguida, salve a imagem para transmitir em um loop.
  6. Em seguida, crie uma instância da classe BarCodeReader com o objeto stream.
  7. Depois disso, chame o método ReadBarCodes() para obter o objeto BarCodeResult.
  8. Por fim, mostre as informações do código de barras.

O exemplo de código a seguir mostra como extrair e ler uma imagem de código de barras de um documento PDF usando C#.

// O exemplo de código a seguir mostra como converter páginas PDF em imagens com PdfExtractor e ler códigos de barras usando C#.
// O caminho para o documento
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// Vincular um documento PDF
Aspose.Pdf.Facades.PdfExtractor pdfExtractor = new Aspose.Pdf.Facades.PdfExtractor();
pdfExtractor.BindPdf(file);

// Definir intervalo de páginas para extração de imagens
pdfExtractor.StartPage = 1;
pdfExtractor.EndPage = 3;

// Extraia as imagens
pdfExtractor.ExtractImage();

// Salve imagens para transmitir em um loop
while (pdfExtractor.HasNextImage())
{
  // Salvar imagem para transmitir
  MemoryStream imageStream = new MemoryStream();
  pdfExtractor.GetNextImage(imageStream);
  imageStream.Position = 0;

  // Reconhecer os códigos de barras do fluxo de imagem acima
  BarCodeReader reader = new BarCodeReader(imageStream);
  foreach (BarCodeResult result in reader.ReadBarCodes())
  {
      Console.WriteLine("Codetext found: " + result.CodeText);
      Console.WriteLine("Symbology: " + result.CodeType);
      Console.WriteLine("-------------------------------");
  }
}

Encontre e leia imagens de código de barras de PDF usando C#

Também podemos encontrar e extrair imagens de código de barras de documentos PDF usando a classe ImagePlacementAbsorber. Ele representa um objeto absorvedor de objetos de posicionamento de imagem. Ele realiza uma pesquisa de usos de imagem e fornece acesso aos resultados da pesquisa por meio da coleção ImagePlacements. Este método ajuda a reconhecer códigos de barras com resolução original. Pode não reconhecer corretamente os formatos vetoriais.

Podemos encontrar e ler códigos de barras dos documentos PDF seguindo as etapas abaixo:

  1. Primeiramente, carregue um documento PDF usando a classe Document.
  2. Em seguida, crie uma instância da classe ImagePlacementAbsorber.
  3. Em seguida, chame o método Visit() para cada página em um loop.
  4. Em seguida, percorra todas as imagens encontradas na coleção ImagePlacements.
  5. Em seguida, salve a imagem no fluxo de memória.
  6. Em seguida, crie uma instância da classe BarCodeReader com o objeto stream.
  7. Depois disso, chame o método ReadBarCodes() para obter o objeto BarCodeResult.
  8. Por fim, mostre as informações do código de barras.

O exemplo de código a seguir mostra como localizar e ler imagens de código de barras de um PDF usando C#.

// Este exemplo de código demonstra como ler um código de barras de um documento PDF usando ImagePlacementAbsorber.
// O caminho para o documento
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// Carregar um documento PDF
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// Inicializar ImagePlacementAbsorber
Aspose.Pdf.ImagePlacementAbsorber imagePlacementAbsorber = new Aspose.Pdf.ImagePlacementAbsorber();

// Processe todas as páginas PDF no documento a partir da página 1
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
    // Visite a página crie um extrator de imagens
    imagePlacementAbsorber.Visit(pdfDoc.Pages[i]);

    // Extraia todas as imagens da página PDF
    foreach (Aspose.Pdf.ImagePlacement imagePlacement in imagePlacementAbsorber.ImagePlacements)
    {
        // Converter uma imagem da página PDF para o fluxo
        MemoryStream ms = new MemoryStream();
        imagePlacement.Save(ms, ImageFormat.Png);
        ms.Position = 0;

        // Reconhecer código de barras da imagem extraída da página
        BarCodeReader reader = new BarCodeReader(ms);

        // Mostrar resultados
        foreach (BarCodeResult result in reader.ReadBarCodes())
        {
            Console.WriteLine("Codetext found: " + result.CodeText);
            Console.WriteLine("Symbology: " + result.CodeType);
            Console.WriteLine("-------------------------------");
        }
    }
}

Obtenha uma licença gratuita

Você pode obter uma licença temporária gratuita para experimentar as bibliotecas sem limitações de avaliação.

Conclusão

Neste artigo, aprendemos como ler códigos de barras de documentos PDF em C#. Também vimos várias abordagens e métodos para extrair imagens de um documento PDF e decodificar os códigos de barras incorporados programaticamente. Além disso, você pode aprender mais sobre as APIs usando a documentação para Aspose.BarCode e a documentação para Aspose.PDF. Em caso de qualquer ambiguidade, não hesite em contactar-nos no nosso fórum.

Veja também