Imprimir Código de Barra para Impressoras Zebra através de Silverlight 4

785 views
Skip to first unread message

Rui Santos

unread,
Jul 5, 2011, 12:14:14 PM7/5/11
to netp...@googlegroups.com
Boas,

Caros herdei uma aplicação feita em windows forms de impressao de codigos de Barras para uma impressora Zebra S600.
A aplicação envia commandos  ZPL(Zebra Programming Language) directamente para a impressora pela porta LPT1 através  
de interop .

Foi-me pedido se era possível adicionar esta funcionalidade a aplicação que estou a desenvolver em Silverlight 4.

Alguém me sabe dizer se é possível enviar código ZPL para uma impressora através de uma aplicação em Silverlight uma vez que eu queria reaproveitar o código
ZPL já definido para os vários tipos de etiquetas e que a impressão fosse despoletada na maquina cliente. 

Se tiverem algum exemplo que use AutomationFactory para ter controlo da impressora do lado do cliente poderá ser uma solução
Todas as sugestões são bem vindas :).
Cumprimentos,
Rui Santos  


     
 



Sérgio Agostinho

unread,
Jul 5, 2011, 12:43:57 PM7/5/11
to netp...@googlegroups.com
Não tenho experiência com impressão em SL (nem em ZPL), mas o Silverlight 5 vai permitir chamadas PInvoke (http://channel9.msdn.com/Events/MIX/MIX11/MED12)... não sei se te ajuda?

Em último caso (caso seja aplicável ao teu cenário), podes sempre implementar a integração com a impressora num web service e chamá-lo do Silverlight.

--
Você recebeu esta mensagem por fazer parte da lista de discussão oficial da Comunidade NetPonto (http://netponto.org).



--
Sérgio Agostinho

Joao Cardoso - Privado

unread,
Jul 5, 2011, 1:05:24 PM7/5/11
to netp...@googlegroups.com

Acho que a ideia do webservice é mesmo a melhor ideia até porque o SL a correr no browser tem muitas limitações de acesso a recursos locais.

 

Se quiseres correr fora do browser para poder fazer COM interop tens de ter a opção “Require elevated trust when running outside the browser” seleccionado nas propriedades do projecto.

 

Depois se usares c# recomendo o uso de dynamic para aceder a COM… se usares VB.NET tens a vida mais facilitada.

 

Cheers

 

Joao Cardoso

Luis Abreu

unread,
Jul 5, 2011, 3:05:51 PM7/5/11
to netp...@googlegroups.com
se for uma aplicacao interna, onde controlas o browser, entao sugiro q
uses uma dll .net como activex control. se quiseres, podes reutilizar
umas classes q desenvolvi ha alguns anos e cujo link de download esta
no meu blog. para alem de imprimirem imagens 1bpp sem teres de as
colocar na memoria da impressora e para alem de abstrair o programador
de ter de usar os comandos de texto, este projeto permite ainda
abstrair o uso de EPL ou ZPL (se n me engano, a ultima versao do
projeto q fiz permite impressao para epl ou zpl, com algumas
limitacoes)...

2011/7/5 Joao Cardoso - Privado <joao.c...@gmx.net>:

--
Regards,
Luis Abreu

Rui Santos

unread,
Jul 6, 2011, 7:28:41 AM7/6/11
to netp...@googlegroups.com
 Obrigado a todos por tentarem ajudar 
 
A aplicação que estou desenvolver usa Silverlight 4.0, C# 4.0, WCF ....
  
Luis obrigado pela dica mas por acaso já tinha encontrado o teu blog numa das minhas pesquisas, até porque eu queria fazer algo de semelhante ao que tu fizes-te ou seja criar uma serie de commandos que encapsulavam a logica commandos em ZPL.
Depois cheguei a encontrar no codeplex o sharpzebra que segue a mesma logica http://sharpzebra.codeplex.com/ .
Neste momento eu tenho um servico em wcf que me devolve o ZPL direitinho( Peguei em alguma da logica da aplicacao antiga e isolei num servico wcf) para mais tarde poder melhorar a contrucao do ZPL. 
O problema é que todos os exemplos que encontrei para enviar ZPL para a impressora usam PInvoke uma vez que eu queria isolar a contrucao do ZPL do mecanismo de impressao.
  
 Por exemplo a neodynamic tem um conjunto de sdks para a impressao de codigos de barra, se experimentarem o sdk para .Net
vão reparar que faz algo semelhante aos exemplos anteriores, se experimentarem o sdk para silverlight a abordagem já é diferente eles disponibilizam e
2 controles uma para configurar e outro para visualizar o codigo de barras, assim desta forma,já podem usar os mecanismos de impressao em silverlight(PrintDocument) porque o que eles enviam para a impressora não é ZPL mas sim o control.(Penso eu :))
 
 
Quanto a questao do servico não sei se pode ser viavel, porque a aplicacao é acedida por clientes diferentes e de locais diferentes, e em alguns casos as impressoras estao ligadas a maquina do utilizador, outros imprimem para uma impressora de rede.
 
Neste momento a sugestão dada pelo Sergio (Silverlight 5 poder usar PInvoke) se calhar podera resolver o meu problema.
Mas tambem não queria estar a usar a versao Beta.
 
 
Cumprimentos,
Rui Santos
 
 
 
 
 
 

Cristovão Morgado

unread,
Jul 6, 2011, 7:35:14 AM7/6/11
to netp...@googlegroups.com
Um "workaround" é no momento de imprimir crias um PDF on the fly que o user imprime......

2011/7/6 Rui Santos <rdfs...@gmail.com>
 
 
 
 
 

--
Você recebeu esta mensagem por fazer parte da lista de discussão oficial da Comunidade NetPonto (http://netponto.org).



--
Cristovao Morgado
aka Saintr



Luis Abreu

unread,
Jul 6, 2011, 7:40:55 AM7/6/11
to netp...@googlegroups.com
> Luis obrigado pela dica mas por acaso já tinha encontrado o teu blog numa
> das minhas pesquisas, até porque eu queria fazer algo de semelhante ao que
> tu fizes-te ou seja criar uma serie de commandos que encapsulavam a logica
> commandos em ZPL.

yep, ate pq na altura em q escrevi o codigo, estavamos a desenvolver
uma aplicação windows forms...

> Neste momento eu tenho um servico em wcf que me devolve o ZPL direitinho(

na minha opiniao, fazer o zpl com o servico nao te da nada de especial...

> Peguei em alguma da logica da aplicacao antiga e isolei num servico wcf)
> para mais tarde poder melhorar a contrucao do ZPL.
> O problema é que todos os exemplos que encontrei para enviar ZPL para a
> impressora usam PInvoke uma vez que eu queria isolar a contrucao do ZPL do
> mecanismo de impressao.
>

sim, pq e a unica forma de abrir a porta de comunicacao com impressora...

>  Por exemplo a neodynamic tem um conjunto de sdks para a impressao de
> codigos de barra, se experimentarem o sdk para .Net
> vão reparar que faz algo semelhante aos exemplos anteriores, se
> experimentarem o sdk para silverlight a abordagem já é diferente eles
> disponibilizam e
> 2 controles uma para configurar e outro para visualizar o codigo de barras,
> assim desta forma,já podem usar os mecanismos de impressao em
> silverlight(PrintDocument) porque o que eles enviam para a impressora não é
> ZPL mas sim o control.(Penso eu :))
>

mas isto ja e outra coisa! o q podes fazer e construir a tua livraria
q gera o codigo de barras. alias, ate existem varios samples na net de
livrarias q criam codigo de barras (com sorte, ja existe uma em C# ou
vb.net para os codigos de barras q necessitas!). nesse caso, entao e
bem mais simples: e so construir a pagina em SL (com dimensoes
adequadas a etiqueta) e manda-la imprimir (se bem me lembro, impressao
em sl consiste em pegar na pagina e converte-la num bitmap q e enviado
para a impressora...)


--
Regards,
Luis Abreu

Sérgio Agostinho

unread,
Jul 6, 2011, 7:55:04 AM7/6/11
to netp...@googlegroups.com
Nesse caso isto pode ajudar: http://silverpdf.codeplex.com/
Sérgio Agostinho

Rui Santos

unread,
Jul 6, 2011, 11:18:52 AM7/6/11
to netp...@googlegroups.com
Pessoal mais uma vez obrigado pela atenção.
Tenho que escolher uma direcção para resolver o problema.
 
Cumprimentos,
Rui Santos  
Reply all
Reply to author
Forward
0 new messages