Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Bezpośredni druk na drukarkę w php
Forum PHP.pl > Forum > PHP
jedrzej
Mój problem dotyczy drukowania, otóż pracuję nad aplikacją, w której większość transakcji polega na przyjmowaniu wpłat i każda ma byc księgowana i dawana klientowi w postaci dowodu wpłaty, drukowanie za pomocą window.print() z JavaScript jest dość uciążliwe i zawsze wymaga dodatkowego kliknięcia, a dodatkowo te nagłówki z adresem strony... Czy jest możliwość bezpośredniego wysłania tekstu do drukarki, potrafi ktoś rozwiązać ten problem?
060156
Mozesz, uzyc printer funkcji z php, ktore umozliwiaja wyslanie na drukare
bezposrednio wynikow (nie sprawdzalem jak drukowane sa polskie znaki )

lub wygenerowac Pdf i wyslac go na drukarke,
nawet lepiej bo mzoesz przed wydrukowaniem przegladnac ..
dr_bonzo
A drukujesz z serwera z php (pewnie sie da) czy z komputera z przegladarka www (nie da sie)?
GrayHat
w javascript drukujesz tak:

  1. <!--
  2. function doit(){
  3. if (!window.print){
  4. alert("Nie mozna wydrukowac strony")
  5. return
  6. }
  7. window.print()
  8. }
  9. //-->
  10.  
  11. <a href="java script:doit()">drukuj</a>


w php:

  1. <?php
  2. $handle = printer_open();
  3. printer_write($handle, "Text to print");
  4. printer_close($handle);
  5. ?>
jedrzej
dzięki za podpowiedzi, niestety wyczytałem, że funkcje printer nie działają pod linuxem,
These functions are only available under Windows 9.x, ME, NT4 and 2000." title="Zobacz w manualu php" target="_manual zapomnialem dodać, że program chodzi właśnie na tej platformie sad.gif
mike
A gdzie jest związek z php5? Bo ja nie widzę.
Przenoszę na php.
GrayHat
@jedrzej: jedyne rozwiazanie jakie widze to generowanie plikow pdf... nie boj sie tego to nie gryzie smile.gif
TomASS
Cytat
drukowanie za pomocą window.print() z JavaScript jest dość uciążliwe i zawsze wymaga dodatkowego kliknięcia,

Możesz utworzyć styl dla drukowania. media::print
Cytat
dodatkowo te nagłówki z adresem strony...

To można usunąć:
IE = Plik->Ustawienia Strony->Nagłówek/Stopka
jedrzej
Wiem, że to mozna usunąć, ale mi bardziej chodzi o to, żeby ominąć w ogóle krok, w którym pokazuje się okienko drukowania. Wyobraź sobie, że drukujesz dziennie 100 dokumentów i dla każdego musisz zmieniać ustawienia, a kolejce czeka następny klient - to nie może tak być sad.gif
TomASS
Ale ustawienia drukowania można zapisać gdzieś na stałę.
Indeo
Interesujący wątek. Znam problem. Drukowanie jest bolączką aplikacji www - co komputer to inny wydruk. Drukowanie czegoś spod przeglądarki to beznadzieja. Wiele rozwiązało u mnie spraw przeniesienie się na PDF (też sie bałem) teraz jestem z PDF'ów bardzo zadowolony z wyjatkiem rozmiaru plików z polskimi znakami .... (za duże)

Mnie czeka wymiana 10 000 umów z klientami. Powiedzmy, że każdą mogę mieć w PDF'ie, ale jak to automatem puścić na drukarkę?
Nie mam pojęcia. A czy na przykład można kilka dokumentów PDF scalić w jeden i wszystko na raz puścić na drukarkę?
artur81
oczywiście ze mozna, z bazy pobierasz interesujące cie dane, i puszczasz to w pętli, ja korzystam np z klasy fpdf. Implementowałem już ją w paru swoich projektach i jak na razie działa bez zarzutu, a obsługa jest banalnie prosta. Klasa sama zadba o dodawanie kolejnych stron.
Indeo
Ja wiem jak tworzy się dokumenty PDF. Problem w tym, że dokumenty są zapisane już w bazie danych i powiedzmy, że nie ma mozliwości ponownego ich wygenerowania w postaci jednego dużgo dokumentu składającego się z wielu mniejszych na podstawie danych niebinarmych. Do dyspozycji są gotowe pliki PDF. I jak puścić grupę takich plików na drukarkę za jednym kliknięciem?
mike
Cytat(Indeo @ 2006-04-28 07:23:56)
(...) powiedzmy, że nie ma mozliwości ponownego ich wygenerowania w postaci jednego dużgo dokumentu składającego się z wielu mniejszych (...)

Jest taka możliwość. Można to zrobić za pomocą FPDI
gotar
co do drukowania czegos 10000 razy roznych plikow no to jak linux to :

for i in *.pdf; do (komenda do drukowania) $i; done

i tyle w windows ;/ mozna zrobic plik wsadowy z podobna rzecza
Zyx
Skrypt uruchomiony na serwerze może bezpośrednio coś wydrukować na drukarce udostępnionej temu serwerowi, w szczególności podpiętej do niego. Ten sam skrypt nie może bezpośrednio dostać się do drukarki podłączonej do komputera użytkownika korzystającego z przeglądarki, o ile przeglądarka na to nie zezwoli. A że nie zezwoli, tego możesz być pewnym - za duże zagrożenie dla bezpieczeństwa. Wyobraź sobie, co by było, gdybyś wszedł na jakąś stronę WWW, a tu nagle drukarka zaczyna Ci zdjęcia porno drukować.
marcin86
Cytat(Zyx @ 5.12.2008, 13:36:13 ) *
Skrypt uruchomiony na serwerze może bezpośrednio coś wydrukować na drukarce udostępnionej temu serwerowi, w szczególności podpiętej do niego. Ten sam skrypt nie może bezpośrednio dostać się do drukarki podłączonej do komputera użytkownika korzystającego z przeglądarki, o ile przeglądarka na to nie zezwoli. A że nie zezwoli, tego możesz być pewnym - za duże zagrożenie dla bezpieczeństwa. Wyobraź sobie, co by było, gdybyś wszedł na jakąś stronę WWW, a tu nagle drukarka zaczyna Ci zdjęcia porno drukować.



A co tu mają wspólnego prawa dostępu skryptu php na serwerze do drukarki na systemie klienta. Skrypt uruchomiony na serwerze może coś wykonać na serwerze i tylko serwerze (no chyba, że mowa o intranecie, to wtedy prędzej, ale też nie za pośrednictwem przeglądarki, tylko sieci ogólnie), w przeglądarce (po stronie klienta) wyświetlane są tylko wyniki czyli kod html + tresc (czysty tekst).
icemanwlkp
Odświeżę temat , mam podobny kłopot z tym iż serwer stoi na windows drukarka jest w tej samej sieci co serwer i teraz mój php wygeneruje mi pdf i chciałbym przesłać go do drukarki .

Używam metody system i odpalam " reader.exe /t @plikpdf @nazwa_drukarki -> zastępując zmienne

Ale to wymaga wykorzystania dodatkowego programu .

Czy można wysłać pdf bezpośrednio na drukarkę podając jej IP i port i czy można przesłać dodatkowe parametry jak podajnik papieru , funkcja duplex itd.

Moja drukarka to Kyocera Model : TASKalfa 2551ci a może istnieje jakiś uniwersalny język komend , będe wdzięczny za podpowiedzi , pozdrawiam
Puszy
Problem dość powszechny, ja rozwiązałem ten problem w zależności od miejsca skryptu:

1. Apka drukuje na drukarce udostępnionej dla serwera na której znajduje się skrypt: exec() z użyciem Acrobata z odpowiednimi parametrami.
2. Apka po stronie uzytkownika: biblioteka PHP do Google Cloud Print + Chrome. Skrypt łączy się do serwera Google, Google łączy się z Chromem (wymagane logowanie na Chromie), dokument leci przez serwery Googla na drukarkę
icemanwlkp
Cytat(Puszy @ 28.12.2016, 11:35:09 ) *
Problem dość powszechny, ja rozwiązałem ten problem w zależności od miejsca skryptu:

1. Apka drukuje na drukarce udostępnionej dla serwera na której znajduje się skrypt: exec() z użyciem Acrobata z odpowiednimi parametrami.


Jakie parametry można skonfigurować wtedy, odnośnie druku ?


Cytat
2. Apka po stronie uzytkownika: biblioteka PHP do Google Cloud Print + Chrome. Skrypt łączy się do serwera Google, Google łączy się z Chromem (wymagane logowanie na Chromie), dokument leci przez serwery Googla na drukarkę


Ta opcja odpada.

Mój serwer i drukarka są w tym samym pomieszczeniu i są w tej samej sieci .
Puszy
@icemanwlkp

Windows przy użyciu Acrobata: http://stackoverflow.com/a/619203/2621852
Linux: https://makandracards.com/makandra/24202-li...he-command-line

Nie testowałem na Linuxie, może (nie musi) wystąpić błąd że będziesz drukował content PDFa a nie sformatowany wygląd.

Edit: i teraz np. ustawiasz w kliencie AJAX który odpali skrypt PHP wykonujący komendę przez exec() i po problemie.
icemanwlkp
TO wszystko ok, ale nie mogę zdecydować czy wydruk ma być duplex , z jakiego zasobnika pobrać papier , format papieru itd ... niestety to za mało .
Puszy
Zmień domyślne ustawienia drukarki, to o czym mówisz ustawia się z poziomu systemu/drukarki. Np podczas wydruku w Chrome możesz wybrać tylko podstawowe opcje (duplex chyba jest dostępny) ale podajnik, czy też jakość wydruku nie są osiągalne.

Edit: możesz chyba te ustawienia zapisać w samym Acrobacie jako domyślne z tego co pamiętam.
icemanwlkp
Fpdf nie daje mi możliwości zapisania takich informacji w pliku pdf , znalazłem program producenta można wszystko ustawić ale działa jako okienko niestety w którym ustawia się wszystko i wysyła pdf niestety z linii komend obsługuję tylko link do pliku pdf nie mogę dodać innych parametrów .
Puszy
No tak ale pytanie czy potrzebujesz wiele profili drukarek? Czy drukujesz n różnych dokumentów czy w kółko drukujesz np. ten sam wzór faktury. Jeżeli tak to ustawiasz raz domyślne ustawienia w drukarce jeżeli nie to w Windowsie możesz dodać drukarkę kilka razy każdą z osobnymi ustawieniami. Miałem tak w przypadku etykiet wysyłanych na Zebrę. Zebra była jedna ale na liście drukarek pojawiały się trzy: etykieta spedycyjna, etykieta EAN i list przewozowy, dzięki czemu mogłeś wysyłać pliki w zależności od zawartości zmieniając jedynie printer_name w komendzie.
icemanwlkp
No jest to jakieś rozwiązanie ,ale podobno drukarki obsługują protokół jakiś , który modyfikuje ich ustawienia na czas następnego wydruku . Co do drukarek zebra nie muszę tego stosować bo można wydruki wysyłać w formie pliku ZPL a w nim ustawia się wszystkie parametry ,a cześć z nich jak naklejki z DHL ich api przesyła już gotowego ZPL-a. Problem tylko w drukarkach laserowych firm Kyocera , Epson itd. Choć złapałem już kontakt z technikiem , który ma mi przesłać specyfikacje pliku jaki mam wysłać przed PDF-em by zmienić ustawienia drukarki dla danego wydruku , jak dostane podzielę się informacją .
Puszy
Nie zawsze jest możliwość pchnięcia ZPLa jak np. Amazon etykiety z kodami SKU pod FBA wysyła w PDFie. Jeżeli rzeczywiście jest coś a'la plik prekonfiguracyjny (tak go nazwijmy) to jedynym problem może być wydruk z wielu klientów, wtedy musiałbyś dorobić kolejkowanie. Ale polecam przyjrzeć się wielu profilom dla jednego urządzenia, może przydać się na przyszłość.
icemanwlkp
Ten prekonfiguracyjny plik musi mieć taka sama nazwę jak plik co leci do drukarki a te generuje losowo wiec nie ma mowy o pomyłce biggrin.gif

NO ZPL nei zawsze ,ale czasami warto podesłać pomysł komuś i może zaczną słać ZPL , dużo firm teraz generuje oba formaty biggrin.gif

To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.