Neste artigo, demonstrarei como gerar códigos de barras programaticamente usando C++. Você também aprenderá a implementar um scanner ou leitor de código de barras em seus aplicativos C++.

gerar código de barras em C++

Os códigos de barras são usados para representar visualmente os dados no formato legível por máquina. A referida tecnologia provou ser útil especialmente nos sistemas de checkout automatizado implantados em lojas e supermercados. Quase todos os produtos no mercado hoje em dia contêm um código de barras. Essa ampla popularidade do código de barras ampliou seus casos de uso em vários domínios. De olho na importância dos códigos de barras, há alguns anos, a Aspose lançou o gerador de código de barras e a API do leitor para diversas plataformas. Este artigo tem como objetivo mostrar como implementar o gerador e leitor de código de barras dentro dos aplicativos C++ para gerar e ler códigos de barras dinamicamente.

API de leitor e gerador de código de barras C++

Aspose.BarCode for C++ é uma API C++ rica em recursos para gerar e ler uma infinidade de códigos de barras 1D e 2D. Ele permite gerar, personalizar e exportar os códigos de barras para imagens de alta qualidade. Você pode baixar os arquivos da biblioteca na seção Downloads. O pacote para download também contém um aplicativo C++ de demonstração para você.

A seguir está a lista de simbologias de código de barras que você pode gerar usando Aspose.BarCode para C++:

  • Código 128
  • Código 39 Padrão
  • Código 39 Estendido
  • Código 93 Padrão
  • Código 93 Estendido
  • Código 11
  • Codabar
  • BooklandEAN
  • EAN13
  • EAN8
  • EAN128
  • Intercalado 2 de 5
  • Padrão 2 de 5
  • MSI
  • Postnet
  • Planeta
  • UPCA
  • UPCE
  • EAN14(SCC14)
  • SSCC18
  • ITF14
  • Suplemento de código de barras
  • Pdf417
  • QR
  • Matriz de dados
  • Matriz 2 de 5
  • PZN (Pharma Zentral Nummer, código de barras Pharmazentralnummer)
  • Código de Identificação Postal Alemão
  • asteca
  • Correio da Austrália

Gerar um código de barras usando C++

Gerar um código de barras usando Aspose.BarCode pode ser feito em algumas linhas de código. A seguir estão as etapas para realizar esta operação.

O exemplo de código a seguir mostra como gerar um código de barras usando C++.

const System::String codeText = u"1234567";
const System::String fileName = u"code39_barcode.jpg";
// Criar gerador de código de barras
System::SharedPtr<BarcodeGenerator> barcodeGenerator = System::MakeObject<BarcodeGenerator>(EncodeTypes::Code39Standard, codeText);
barcodeGenerator->get_Parameters()->set_Resolution(300);
// Gerar código de barras e salvar como imagem
barcodeGenerator->Save(fileName);

O seguinte é o código de barras que geramos usando o código acima.

Gerar código de barras 2D (QR ou outro) usando C++

No exemplo anterior, criamos um código de barras unidimensional. Vamos agora criar um código de barras bidimensional, como o código QR. A seguir estão as etapas para criar um código de barras QR.

O exemplo de código a seguir mostra como gerar um código de barras QR usando C++.

const System::String codeText = u"1234567";
const System::String fileName = u"QR_Code.jpg";
// Criar gerador de código de barras
System::SharedPtr<BarcodeGenerator> barcodeGenerator = System::MakeObject<BarcodeGenerator>(EncodeTypes::QR, codeText);
barcodeGenerator->get_Parameters()->set_Resolution(300);
// Gere código de barras e salve como imagem
barcodeGenerator->Save(fileName);

O código QR a seguir será gerado usando o código acima.

Gere códigos de barras personalizados usando C++

Você também pode personalizar a aparência do código de barras. Por exemplo, você pode definir a cor do primeiro plano, cor do plano de fundo, tamanho, estilo da borda e etc. A seguir estão as etapas para personalizar os códigos de barras usando Aspose.BarCode para C++.

O exemplo de código a seguir mostra como gerar um código de barras personalizado usando C++.

System::SharedPtr<BarcodeGenerator> barcodeGenerator = [&] { auto tmp_0 = System::MakeObject<BarcodeGenerator>(EncodeTypes::Aztec, System::String(u"1234567890"));
// definir estilo broder
tmp_0->get_Parameters()->get_Border()->set_DashStyle(Aspose::BarCode::BorderDashStyle::Solid);
// definir largura
tmp_0->get_Parameters()->get_Border()->get_Width()->set_Millimeters(1.0f);
// definir visibilidade da borda
tmp_0->get_Parameters()->get_Border()->set_Visible(true);
// definir cor de fundo
tmp_0->get_Parameters()->set_BackColor(System::Drawing::Color::get_Black());
// definir a cor da barra do código de barras
tmp_0->get_Parameters()->get_Barcode()->set_ForeColor(System::Drawing::Color::get_Orange());
// definir cor da borda
tmp_0->get_Parameters()->get_Border()->set_Color(System::Drawing::Color::get_Black());
// definir cor do texto
tmp_0->get_Parameters()->get_Barcode()->get_CodeTextParameters()->set_Color(System::Drawing::Color::get_Orange());
// definir resolução de imagem
tmp_0->get_Parameters()->set_Resolution(400);
return tmp_0; }();	
 
barcodeGenerator->Save(System::String(u"custom_barcode.jpg"));

A seguir está o código de barras asteca personalizado que geramos.

Gerar códigos de barras com uma legenda usando C++

Os códigos de barras também podem conter a legenda abaixo ou acima do código de barras. Você pode definir o texto da legenda, bem como sua visibilidade na imagem do código de barras. O exemplo de código a seguir mostra como gerar um código de barras com as legendas usando C++.

System::SharedPtr<BarcodeGenerator> generator = [&] { auto tmp_0 = System::MakeObject<BarcodeGenerator>(EncodeTypes::Code39Standard, System::String(u"1234567890"));
// definir legenda acima
tmp_0->get_Parameters()->get_CaptionAbove()->set_Text(u"Caption Above");
// definir visibilidade
tmp_0->get_Parameters()->get_CaptionAbove()->set_Visible(true);
// definir legenda abaixo
tmp_0->get_Parameters()->get_CaptionBelow()->set_Text(u"Caption Below");
// definir visibilidade
tmp_0->get_Parameters()->get_CaptionBelow()->set_Visible(true);
// definir resolução
tmp_0->get_Parameters()->set_Resolution(300);
return tmp_0; }();
generator->Save(System::String(u"barcode_caption.jpg"));

Segue um código de barras com as legendas acima e abaixo.

Digitalize e leia códigos de barras usando C++

Vamos agora ver como digitalizar e ler os códigos de barras usando Aspose.BarCode para C++. A seguir estão as etapas para executar esse recurso.

  • Crie uma instância da classe BarCodeReader.
  • Inicialize a instância BarCodeReader com o arquivo de imagem do código de barras e sua simbologia.
  • Use o método BarCodeReader->Read() para recuperar o texto e o tipo do código de barras.

O exemplo de código a seguir mostra como digitalizar e ler um código de barras usando C++.

// Criar instância da classe BarcodeGenerator 
System::SharedPtr<BarCodeReader> reader = System::MakeObject<BarCodeReader>(u"Code128.png", DecodeType::Code128);
while (reader->Read())
{
	// Texto do código de exibição e tipo de simbologia
	System::Console::WriteLine(System::String(u"CodeText: ") + reader->GetCodeText());
	System::Console::Write(System::String(u"Symbology Type: ") + reader->GetCodeType());
}
reader->Close();

Leia códigos de barras com múltiplas simbologias usando C++

Na maioria das vezes, uma imagem contém apenas uma única simbologia de código de barras. No entanto, em certos casos, a imagem pode conter códigos de barras de várias simbologias ao mesmo tempo. Nesses casos, você pode fornecer uma lista das simbologias de código de barras a serem digitalizadas e lidas.

O exemplo de código a seguir mostra como digitalizar uma imagem com várias simbologias de código de barras usando C++.

// Definir simbologias de código de barras
System::ArrayPtr<System::SharedPtr<BaseDecodeType>> objArray = System::MakeArray<System::SharedPtr<Aspose::BarCode::BarCodeRecognition::BaseDecodeType>>({ DecodeType::Code39Standard, DecodeType::Pdf417 });

// Inicialize o BarCodeReader, chame o método Read() em um loop e exiba o texto do código e o tipo de simbologia
System::SharedPtr<BarCodeReader> reader = System::MakeObject<BarCodeReader>(u"RecognizingMultipleSymbologies.png", objArray);
while (reader->Read())
{
	System::Console::WriteLine(System::String(u"Codetext: ") + reader->GetCodeText());
	System::Console::WriteLine(System::String(u"Symbology type: ") + reader->GetCodeType());
}
reader->Close();

Conclusão

Neste artigo, você aprendeu como gerar códigos de barras com diferentes simbologias usando C++. Além disso, o procedimento de digitalização e leitura de códigos de barras também é discutido junto com exemplos de código C++. Você pode explorar mais sobre a API usando a documentação.

Veja também