使用系统命令在 Rails 应用程序中直接打印

Direct Printing in Rails app using system commands

我有一个方法可以直接打印 pdf!如您所见here

我必须使用 system(lpr) command.This 解决方案工作正常但在 ubuntu 中不windows 或任何其他 OSwindows你知道怎么做吗?

这是我的方法:

def general_receipt_export
    if params[:official_id].present?
        @ids = params[:official_id].split(',')
        @officials = Official.find(@ids)
        pdf = render_to_string pdf: "#{@ids.map(&:inspect).join(',').to_s + '_receipt.pdf'}", :template => 'officials/general_receipt_export.html.erb', encoding: 'utf8',orientation: 'Landscape',page_size: 'A4'
        render layout: false
        save_path = Rails.root.join('public','pdfs', "#{@ids.map(&:inspect).join(',').to_s + '_receipt.pdf'}")
        File.open(save_path, 'wb') do |file|
          file << pdf
        end
        system("lpr", "public/pdfs/#{@ids.map(&:inspect).join(',').to_s + '_receipt.pdf'}")
    else
       render json:{messege: 'No letter to export'},status: 404
    end
  end

请参阅此页面以供参考:https://technet.microsoft.com/en-us/library/cc731926(v=ws.11).aspx 您需要在 Windows 机器上安装行式打印机守护程序 (LPD) 运行。然后就可以发出命令了。您可能需要更改某些安全设置。我已经很长时间没有在 Windows 机器上使用 Rails,所以我不太确定安全设置是否会影响它。

您确定要打印的机器有行式打印机守护进程 运行?

来自我上面链接的页面:

This example shows how to print the "Document.txt" text file to the LaserPrinter1 printer queue on an LPD host at 10.0.0.45:

Lpr -S 10.0.0.45 -P LaserPrinter1 -o Document.txt

希望能帮助或引导您朝着正确的方向前进。

我找到了一个更简单的解决方案,它与您使用的 OS 无关! 这对于 Ruby:

<%= link_to 'print', 'your_link_here', :onclick => 'window.print();return false;'%> 

它等价于 HTML:

<a onclick="window.print();return false;" href="your_link">print</a>

感谢大家抽出宝贵的时间。