Impressão direta via TCP/IP com RubyGhost
Tuesday, July 10th, 2007Geralmente as impressoras de médio e grande porte disponibilizam uma porta TCP conhecida como ‘porta bruta’ de número 9100. Demonstrarei aqui uma forma de imprimir diretamente neste tipo de printer, para o nosso exemplo usaremos o driver postscript genérico da Adobe(PS-Adobe-3.0).
Models Contas e Clientes
class Contas < ActiveRecord::Base belongs_to :clientes end class Clientes < ActiveRecord::Base has_one :contas end
Configurando as colunas
require 'rghost' clientes=Clientes.find :all, :include => :contas, :limit => 10000 grid=DataGrid::RailsGrid.new :width => 4 , :align => :center grid.col :codigo, :title => "Código do Cliente", :width => 5 grid.col :nome, :title => "Nome" grid.col :created_on, :title => "Data de Cadastro ", :format => :eurodate grid.col lambda { contas.login }, :title => "Login" grid.data(clientes)
Criando o documento com dados do ActiveRecord
doc=Document.new :paper => :A4, :landscape => true, :duplex => true doc.before_page_create do set Image.for("/tmp/fatura.eps") end doc.set grid doc.done
Enviando o documento
printer = TCPSocket.open('192.168.1.70', 9100) printer.write doc.render_stream(:ps)
Deve ter saído lá na impressora…
Para mais informações no RGhost - RubyForge . Documentação em português no RubyForge