2009-10-22 123 views
5

我需要使用Ruby on Ruby on Rails将格式化文本发送到打印机或从Ruby程序将PDF文件发送到打印机。我可以编写代码来从Rails应用程序创建PDF文件,但不知道如何将该PDF文件打印到默认打印机。我正在尝试使用Ruby on Rails编写一个小票务应用程序。将文件打印到Ruby中的打印机

+0

了解这是什么操作系统会非常有帮助。 – 2009-10-22 20:54:38

+0

我认为@Shreyans希望在客户端打印,而不是在服务器端打印。 @wdebeaum和@ P.Bader的答案是服务器端。 – klew 2010-04-12 11:06:23

回答

6

在Linux和Mac OS X上,您可以使用“lpr”命令行程序,将PDF文件的名称传递给它(不确定是否有Windows)。例如:

def print_to_paper 
    your_code_to_write_a_pdf_file("file.pdf") 
    system("lpr", "file.pdf") or raise "lpr failed" 
end 
+0

谢谢(y)。有效!! – Rohit 2017-10-31 05:37:45

8

这是Windows环境中的一个解决方案:Foxit! http://www.foxitsoftware.com/pdf/reader/

您可以调用foxit.exe(独立可执行文件)在后台以静默方式打印PDF。

语法:foxit.exe /吨 “你file.pdf”, “打印机名称”

shell = WIN32OLE.new('Shell.Application')

shell.ShellExecute("foxit.exe","/t \"#{filename}\" \"#{printer}\"")

0

我不知道是否有对打印内容的方式来自web的默认打印机。在我的银行,当我想要付款确认时,他们给我pdf,我必须打印它manualy。我认为这是很好的解决方案。只需添加一些关于它的信息。

0

我有一个用于创建计算机标签的内部应用程序。我从我从戴尔获得的文件中导入计算机,或者手动输入它们,然后将它们导出为可以导入MS SCCM的CSV文件。我可以打印标签放在电脑上。标签上有公司标志,计算机名称,MAC地址和服务台联系信息。

我用gLabels打印它。您可以在gLabels中设计一个标签,输入动态字段并向其中提供一个CSV,然后它会分发一个PDF,然后使用lpr将其打印到我的Dymo Labelwriter中。

我把它放在我的计算机模型中,因为我不知道要把它放在哪里。

# Print all computers with printed = false 
def self.print 
    printed_labels = 0 
    csv_file = Tempfile.new(["computers", ".csv"]) 
    logger.debug("Writing #{csv_file.path}") 
    begin 
    Computer.transaction do 
     Computer.unprinted.each do |computer| 
     csv_file.puts "\"#{computer.mac(' ')}\",\"#{computer.hostname}\"" 
     computer.printed = true 
     computer.save 
     printed_labels += 1 
     end 
    end 
    ensure 
    csv_file.close 
    if csv_file.length > 0 
     pdf_file = Tempfile.new(["computers", ".pdf"]) 
     begin 
     pdf_file.close 
     system '/usr/bin/glabels-batch', "--input=#{csv_file.path}", "--output=#{pdf_file.path}", AssetBase::Application.config.computer_label 
     system '/usr/bin/lpr', '-P', 'LabelWriter-450', pdf_file.path 
     ensure 
     pdf_file.unlink 
     end 
    end 
    csv_file.unlink 
    end 
    printed_labels 
end 

这是在Fedora Linux上运行的,因此打印机后端是CUPS,它的哪些部分处理PDF我不知道。它可能是CUPS或打印机驱动程序或打印机驱动程序本身。

还有其他创建结构化文本到PDF的方法,但对于标签gLabels是伟大的。