A solucao aparentemente muito simples e funcional me fez perceber que podemos fazer qualquer sistema que utilize base SQL Server imprimir diretamente em impressoras termicas de linguagem especifica (PPLA, PPLB, ZPL, etc). Para isso, vamos dividir esta informacao em tres partes fundamentais: geracao dos dados da etiqueta, salvar estes dados em um arquivo texto e finalmente copiar este arquivo diretamente a impressora desejada pela rede. 1. Geracao dos dados da etiqueta O primeiro procedimento que montei e o que realiza a busca de todas as informacoes no banco de dados para a impressao da etiqueta, e monta dinamicamente todos os comandos ZPL necessarios para a impressao da etiqueta: Code Snippet -- set nocount on -- exec spArkabEtiqueta 9 create proc [dbo].[spArkabEtiqueta] @id_volume int , @cd_impressora int as /* Autor: Fabiano Cores Data : 06/2011 Objetivo: Gera a etiqueta atraves de comandos ZPL, salva em arquivo atraves de automacao OLE e lanca o arquivo diretamente para a impressora termica na rede atraves de simples compartilhamento, somente copiando o arquivo para o dispositivo (como \\pc-na-rede\nome_imp_zebra) */ declare @t table (texto varchar(8000) null, ordem int not null identity) declare @cd_empresa int declare @nr_pedido int declare @nr_volume int declare @qt_volume int declare @cd_usuario int declare @qt_pecas int declare @cliente varchar(60) declare @transportadora varchar(60) declare @endereco varchar(200) declare @complemento varchar(200) declare @pedido varchar(20) declare @volume varchar(20) declare @responsavel varchar(50) declare @data varchar(20) declare @quantidade varchar(20) declare @cdb varchar(50) declare @vtexto varchar(8000) declare @texto varchar(max) declare @diretorio varchar(255) declare @arquivo varchar(100) declare @origem varchar(500) declare @destino varchar(500) select @cd_empresa = cd_empresa , @nr_pedido = nr_pedido , @nr_volume = nr_volume , @cd_usuario = cd_usuario , @cdb = cdb from ArkabVolume where id_volume = @id_volume select @qt_pecas = sum(qt_item) from arkabvolumeitem where id_Volume = @id_volume select @qt_volume = count(*) from ArkabVolume where cd_empresa = @cd_empresa and nr_pedido = @nr_pedido select @cliente = rtrim(cadastro.razao) , @transportadora = isnull(rtrim(transp.razao),'') , @endereco = rtrim(cadastro.endereco) , @complemento = rtrim(ltrim( rtrim(isnull(cadastro.complemento, '')) + ' ' + rtrim(cidade.nome) + '/' + rtrim(cidade.cd_estado) + ' - ' + left(rtrim(cadastro.cep),5) + '-' + right(rtrim(cadastro.cep),3))) , @pedido = right('000000' + rtrim(@nr_pedido), 6) , @volume = right('000' + rtrim(@nr_volume),3)-- + '/' + right('00' + rtrim(@qt_volume),2) , @responsavel = rtrim(usuario.login) , @data = convert(char(10), getdate(), 103) + ' ' + right('00' + rtrim(datepart(hour, getdate())),2) + 'h' , @quantidade = rtrim(@qt_pecas) + ' PC' from cadastro, cidade, usuario, pedidovenda, cadastro transp where pedidovenda.cd_cadastro = cadastro.cd_cadastro and cidade.cd_Cidade = cadastro.cd_cidade and pedidovenda.cd_empresa = @cd_empresa and pedidovenda.nr_pedido = @nr_pedido and usuario.cd_usuario = @cd_usuario and pedidovenda.cd_transportador *= transp.cd_cadastro select @texto = ' ^XA ^MD10 ^LT0 ^JMA^FS ^MUd,200,200 ^LH6,0 ^FO20,7 ^GB780,625,5,,0 ^FS ^FO20,70 ^GB645,120,5,,0 ^FS ^FO20,7 ^GB780,70,70,,0 ^FS ^FO660,70 ^GB140,562,5,,0 ^FS ^FO20,275 ^GB235,160,5,,0 ^FS ^FO30,305 ^GB215,120,120,,0 ^FS ^FO250,275 ^GB180,160,5,,0 ^FS ^FO260,305 ^GB160,120,120,,0 ^FS ^FO425,275 ^GB240,85,5,,0 ^FS ^FO425,355 ^GB240,80,5,,0 ^FS ^FO425,430 ^GB240,75,5,,0 ^FS ^FO425,500 ^GB240,132,5,,0 ^FS ^FO90,20,0 ^ATN,30,20 ^FR ^FD DECORLUX MATERIAL ELETRICO LTDA ^FS ^FO30,80,0 ^AQN,20,10 ^FD CLIENTE ^FS ^FO30,103,0 ^ATN,30,20 ^FD ' + left(rtrim(@cliente), 29) + ' ^FS ^FO30,138,0 ^ATN,30,20 ^FD ' + substring(@cliente, 30, 29) + ' ^FS ^FO30,138,0 ^ASN,30,20 ^FD ^FS ^FO30,200,0 ^AQN,20,10 ^FD TRANSPORTADORA ^FS ^FO30,223,0 ^ASN,30,20 ^FD ' + rtrim(@transportadora) +