Drukowanie dokumentu z poziomu PHP

0

Mam problem z drukowaniem dokumentów z poziomu kodu PHP.

Piszę system, który adresuje koperty, które następnie będą wysyłane do klientów.
Niestety, ale mam problem z ich drukowaniem. System powinien po wygenerowaniu listy klientów zaadresować koperty i wysłać je do drukarki w celu wydruku.
Może ktoś już robił podobną rzecz i mógłby mi podpowiedzieć, jak można ten problem rozwiązać.

Oczywiście generowanie dokumentu np. PDF i wyświetlenie go użytkownikowi, który następnie będzie mógł go wydrukowań nie wchodzi w grę. Kod PHP musi automatycznie wysyłać taki dokument do drukarki.

0

Na pewno z PHP tego nie zrobisz. Czemu? Bo PHP to język parsowany po stronie serwera. Można by napisać w Delphi program który drukowałby wybrany dokument i przypisać go do jakiegoś protokołu. Na przykład po wygenerowaniu dokumentu, otwierałby się adres: drukujAuto://|domena.pl/doc.txt| . Wtedy przeglądarka po wykonaniu takiego protokołu odpalałaby program który przez IdHTTP ściągałby "domena.pl/doc.txt" i wydawał polecenie do drukarki. Trochę kombinacji ale może się udać. Można jeszcze zrobić tak ze będziesz w jakiś sposób generował listę wszystkich plików do wydrukowania, po czym program cyklicznie ściągałby i drukował te dokumenty. Ogólnie to już lepiej byłoby jakby cały generator przepisać do Delphi.

0

Cały problem jest w tym, że to co mam zrobić to jest moduł do już istniejącej całości, a ta całość to aplikacja napisana w PHP.
Można wygenerować PDF i kazać użytkownikowi kliknąć drukuj. Jest sposób, aby automatycznie wywołać okienko drukowania i użytkownik musi tylko zmienić ustawienia.

Niestety, ale muszę to zrobić automatycznie.
Jest funkcja printer w PHP, która odpowiada za komunikację z drukarką, ale czytałem, że działa wyłącznie pod Windows, a aplikacja uruchomiona jest na serwerze Unix.

Może jednak ktoś wie, jak takie coś można zrobić.

Mi chodzi o drukowanie na drukarce podłączonej do serwera, na którym znajduje się system

0

poszukaj jeszcze bo jest coś na pewno takiego
a skoro znalazłeś moduł do windowsa to jest jeszcze opcja żeby ten system z unixa komunikował się z tym z windowsem a ten z drukarką ;P pytanie ile komputerów trzeba do wydrukowania jednego dokumentu :D

0

Jeżeli ten wydruk ma mieć miejsce na drukarce podłączonej do serwera to można po prostu przy pomocy funkcji system odpalić któryś z tych linux'owych programów konsolowych który puścił by dokument do druku. Poszperaj w dokumentacji CUPS'a.

Po stronie klienta to raczej PHP'cem nie przepchniesz żadnego HTML'a lub JavaScript'a, który dał by ci bezpośredni dostęp do drukarki.

0

Chyba że aplet JAVA...

0

No coz PHPem tego po prostu nie da sie zrobic. Proponuje napisac programik np w Delphi, ktory sciagalby np w postaci XMLa dane adresowe ze skryptu PHP i generowalby koperty z nadrukiem oraz drukowal je na komputerze klienta. Tak naprawde nie ma innej opcji, kwestia tylko w jakim jezyku napiszesz taki program.

0

W takim razie spróbuję połączyć się przy pomocy PHP z CUPS i znaleźć sposób, jak wysłać do niego dokument.

0

jak slysze wasz rady to mi rece opadaja specjalisci
oczywiscie ze sie da
google.pl php_printer.dll
i korzystamuy z funkcji printer_open
reszta w manualu i ...nie doradzajcie nikomu od du.. strony

0

Fajnie że ktoś pamięta o tematach z 2008 i 2007...

0

@redsector:
Postaram się nie powielić błędu, o który Ciebie podejrzewam, i napiszę to defensywniej...

Czytałeś uważnie ten wątek? Jesteś pewien,że ten moduł pomoże autorowi tematu? DLL-ki są charakterystyczne dla Windows, a rozszerzenie PHP Printer z tego co widzę jest w sekcji "Windows Only Extensions", o tu:

http://www.php.net/manual/en/refs.utilspec.windows.php

Tymczasem autor tematu napisał: "Jest funkcja printer w PHP, która odpowiada za komunikację z drukarką, ale czytałem, że działa wyłącznie pod Windows, a aplikacja uruchomiona jest na serwerze Unix.".

Co więcej, nie zgłębiałem się w tego PHP.Printer, ale wydaje mi się, że to działa tylko tak, że serwer z PHP może korzystać z drukarki podłączonej do tego serwera. Nie jest tak, że ktoś może wejść na stronę (napisaną w PHP) i kliknąć powiedzmy w jakiś link, a PHP w odpowiedzi na to żądanie rozpoczyna drukowanie na jego drukarce :).

Innymi słowy wydaje mi się, że to pana rozwiązanie, panie "specjalisto", jest w tym wypadku zupełnie nieadekwatne.

0

Hmmmmm, a JS nie może poprosić przeglądarki o wydrukowanie??

0

@winerfresh:
Może. Jest funkcja window.print (wystarczy samo print). To się do PHP ma oczywiście nijak. Zgodnie z tym, co napisał na poprzedniej stronie @Demonical Monk, PHP jest wykonywane po stronie serwera. Gdy drukarka jest po stronie klienta, to z PHP nici. Od tego jest JS. Można się oczywiście kłócić, że możliwa jest do napisania funkcja w PHP robiąca echo '<script type="text/javascript">print();</script>', ale w ten sposób można posądzać PHP o wszystko, co robi JS, bo JS może być generowany przez PHP.

0

No jedyne sensowne rozwiązanie to zdefiniować własny protokół w przeglądarkach typu:

drukuj://pdf123

Tylko to dodatkowo wymaga napisania programu obsługującego coś takiego. Chociaż nie jest to trudna sztuka. Tak jak pisałem wcześniej coś na bazie:

1) Przypisujemy w przeglądarce, że jeśli znajdzie link z protokołem <i>drukuj</i> to automatycznie otwiera (zapamiętaj wybór) program drukarka.exe
2) Program <i>drukarka.exe drukuj://abc123</i> łączy się z adresem przykładowo:
http://example.com/print.php?code=abc123
Pobiera PDFa i go drukuje na chama

Problem w tym tylko, że trzeba zawsze te 500kB zainstalować po stronie klienta, a żeby to zrobić trzeba mieć dostęp.

1 użytkowników online, w tym zalogowanych: 0, gości: 1