Geralmente 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