Potrzebuję pomocy w wysyłaniu sformatowanego tekstu do drukarki przy użyciu Ruby w Ruby na szynach LUB wysyłania pliku PDF do drukarki z programu Ruby. Mogę napisać kod, aby utworzyć plik pdf z aplikacji Rails, ale nie wiem, jak wydrukować ten plik PDF na domyślną drukarkę. Próbuję napisać małą aplikację biletową z Ruby on Rails.Drukowanie pliku na drukarce w języku Ruby
Odpowiedz
W systemach Linux i Mac OS X można użyć programu wiersza poleceń "lpr", przekazując mu nazwę pliku PDF (nie jest jednak pewne co do systemu Windows). Na przykład:
def print_to_paper
your_code_to_write_a_pdf_file("file.pdf")
system("lpr", "file.pdf") or raise "lpr failed"
end
Dzięki (y). Zadziałało!! – Rohit
Oto rozwiązanie w środowisku Windows: Foxit! http://www.foxitsoftware.com/pdf/reader/
Możesz wywołać program foxit.exe (samodzielny plik wykonywalny), aby w trybie cichym wydrukować plik PDF w tle.
Składnia: foxit.exe/t "Twój file.pdf" "Nazwa drukarki"
shell = WIN32OLE.new('Shell.Application')
shell.ShellExecute("foxit.exe","/t \"#{filename}\" \"#{printer}\"")
Nie jestem pewien, czy istnieje sposób, aby wydrukować coś na domyślna drukarka z sieci. W moim banku, gdy chcę uzyskać potwierdzenie płatności, dostaję pdf i muszę go wydrukować ręcznie. Myślę, że to dobre rozwiązanie. Po prostu dodaj trochę informacji na ten temat.
Mam wewnętrzną aplikację do tworzenia etykiet komputerowych. Importuję komputery z pliku otrzymanego od firmy Dell lub wprowadzam je ręcznie, eksportuję je do pliku CSV, który mogę zaimportować do MS SCCM. Mogę drukować etykiety do umieszczenia na komputerach. Etykiety mają logo firmy, nazwę komputera, adres MAC i dane kontaktowe servicedesk.
Drukuję go za pomocą gLabels. Projektujesz etykietę w gLabels, wpisujesz dynamiczne pola i dodajesz do niej plik CSV, a następnie wypisuje plik PDF, który następnie wykorzystuję do drukowania Lpr do mojego Dymo Labelwritera.
Umieściłem to w moim modelu Komputery, ponieważ nie wiedziałem, gdzie jeszcze go umieścić.
# 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
Ten działa na Fedorze Linux, więc backend drukarki to CUPS i jego część, która obsługuje PDF, którego nie znam. Może to być CUPS lub sterownik drukarki lub sam sterownik drukarki.
Istnieją inne metody tworzenia tekstu strukturalnego do formatu PDF, ale dla etykiet gLabels jest świetny.
Byłoby bardzo pomocne wiedzieć, dla jakiego systemu operacyjnego to jest. –
Myślę, że @Shreyans chcą wydrukować go po stronie klienta, a nie po stronie serwera. Odpowiedzi @wdebeaum i @ P.Bader są po stronie serwera. – klew