使用系统命令在 Rails 应用程序中直接打印
Direct Printing in Rails app using system commands
我有一个方法可以直接打印 pdf!如您所见here
我必须使用 system(lpr) command.This 解决方案工作正常但在 ubuntu 中不windows 或任何其他 OS。 windows你知道怎么做吗?
这是我的方法:
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>
感谢大家抽出宝贵的时间。
我有一个方法可以直接打印 pdf!如您所见here
我必须使用 system(lpr) command.This 解决方案工作正常但在 ubuntu 中不windows 或任何其他 OS。 windows你知道怎么做吗?
这是我的方法:
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>
感谢大家抽出宝贵的时间。