Probleem met afdrukken?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pascal Schuffelers

Pascal Schuffelers

06/10/2018 08:03:42
Quote Anchor link
Ik heb alles zo goed als klaar, maar zit nog met 1 dingetje en ben daar nu 2 dagen mee bezig en ik zie het probleem niet.

Ik heb dus een gedeelte waar men gegevens kan invullen.
Als men op de knop opslaan duwt word eerst alles opgeslagen in de database en vervolgens word eerst in een apart scherm etiketten ingevuld getoond en afgedrukt en dan briefjes ingevuld.

Het afdrukken van de etiketten gaat zonder probleem omdat deze werkt via de web framework van DYMO.
Maar als de briefjes geladen word, wat werkt via een script , krijg ik data niet automatisch geprint.

Het script dat ik gevonden had was deze.:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<script type="text/javascript">
setTimeout(function () { window.print(); }, 100); //was 500
window.onfocus = function () { setTimeout(function () { window.close(); }, 100);   //was 500
}
</script>


Hij laat mij dan een print voorbeeld zien , waar ik dan op afdrukken kan duwwen.
Dit wil ik echter niet, ik wil net als die etiketten gelijk dat hij afdrukt.

Is dit wel mogelijk , voor dat we een speld in een hooiberg gaan zoeken?
 
PHP hulp

PHP hulp

21/11/2024 19:16:20
 
Thomas van den Heuvel

Thomas van den Heuvel

06/10/2018 14:33:54
Quote Anchor link
Quote:
Het afdrukken van de etiketten gaat zonder probleem omdat deze werkt via de web framework van DYMO.

Maar dat is een DYMO printer voor het printen van etiketten enzo?

Quote:
Maar als de briefjes geladen word, wat werkt via een script , krijg ik data niet automatisch geprint.

En dat is een andere printer?

Appels <--> peren?

Het is misschien wel mogelijk om de printer rechtstreeks(er) opdrachten te geven, maar waarschijnlijk niet via J(ava)Script.
Gewijzigd op 06/10/2018 14:34:18 door Thomas van den Heuvel
 
Pascal Schuffelers

Pascal Schuffelers

07/10/2018 21:03:20
Quote Anchor link
Die etiketten word inderdaad via een dymo printer afgedrukt.
De formulieren via een gewone printer die op het netwerk zit.

Ja , het hoeft niet perse met java, andere manieren zijn ook goed, maar ik vind ze nergens.
 
Thomas van den Heuvel

Thomas van den Heuvel

07/10/2018 23:41:21
Quote Anchor link
Eh, ja. We hebben waarschijnlijk wat meer info nodig.

Hoe ziet je netwerkconfiguratie er uit (wat voor machines en waar - lokaal / intranet / etc.), welke besturingssystemen gebruik je, hoe hangt de printer hier aan? Hoe past de webserver in dit plaatje etc.? Dit alles bij elkaar bepaalt waarschijnlijk welke oplossing je dient te gebruiken. Voor Windows/Apache is er waarschijnlijk wel een DLL en in geval van Linux biedt het commando lpr mogelijk uitkomst.

Met het bovenstaande zou je al een eind moeten komen en anders Google eens op "PHP print via network" ofzo en kijk wat het meest op jouw situatie van toepassing is.

De vraag "hoe kan ik rechtstreeks printen" kan anders met geen fatsoen beantwoord worden waarschijnlijk, en het ziet er ook niet naar uit dat dit rechtstreeks via JavaScript afgedwongen kan worden (een vlugge zoektoch leert dat je dan altijd een dialoog krijgt).
Gewijzigd op 07/10/2018 23:43:06 door Thomas van den Heuvel
 
Pascal Schuffelers

Pascal Schuffelers

08/10/2018 11:32:38
Quote Anchor link
In principe ga je iets te ver om de vragen te stellen hoe het netwerk er uit ziet.
De printer die in het netwerk staat, staat gewoon op iedere pc/laptop.
Dus die staat ook overal als standaard ingesteld, drukt men op print komt hij bij die printer eruit gewandeld.
Dit staat in dit geval los van het lokaal/intranet.

Vermoedelijk kom ik inderdaad niet van dat dialoog af mits ik iets in het systeem van betreffende pc/laptop aanpas.

Het zij dan helaas zo, meende dat ze hier ook wel een omweg voor hadden.
 
Ben van Velzen

Ben van Velzen

08/10/2018 12:17:05
Quote Anchor link
Zou nogal dom zijn als je van het printerdialoog af zou kunnen komen. Denk je eens in hoe gevoelig dat zou zijn voor een willekeurig script op een willekeurige website die je printer vol zou proppen met opdrachten.
De gebruikelijke methode voor printen op labels en dergelijke is zoals Thomas aangeeft het gebruiken van een printserver die vanaf de command line (dus bijvoorbeeld middels PHP) rechtstreeks aangestuurd kan worden.
 
Thomas van den Heuvel

Thomas van den Heuvel

08/10/2018 12:47:53
Quote Anchor link
Pascal Schuffelers op 08/10/2018 11:32:38:
In principe ga je iets te ver om de vragen te stellen hoe het netwerk er uit ziet.

Dat denk ik niet, want dit bepaalt (mede) de technische oplossing. Ik bedoelde meer een soort van layout, niet of de PC van Bep bij het raam staat ofzo. Daarnaast betreft dit toch een lokaal netwerk, dus daar komt niemand verder van buitenaf bij lijkt mij, als dat jouw bezorgdheid is.

Pascal Schuffelers op 08/10/2018 11:32:38:
De printer die in het netwerk staat, staat gewoon op iedere pc/laptop.
Dus die staat ook overal als standaard ingesteld, drukt men op print komt hij bij die printer eruit gewandeld.
Dit staat in dit geval los van het lokaal/intranet.

Je zegt zelf dat dit via een webapplicatie gaat:
Quote:
Maar als de briefjes geladen word, wat werkt via een script

Dan zou dus de webapplicatie de initiator van de printopdracht moeten zijn, en niet de gebruiker zelf, anders ben je inderdaad weer terug in de situatie waarbij deze via een dialoog een printopdracht geeft waarbij JavaScript enkel een doorgeefluik is.

Pascal Schuffelers op 08/10/2018 11:32:38:
Dit staat in dit geval los van het lokaal/intranet.

Sterker nog, ik denk dat je hier juist de oplossing zou moeten zoeken.
Gewijzigd op 08/10/2018 12:52:54 door Thomas van den Heuvel
 
Ivo P

Ivo P

08/10/2018 17:09:26
Quote Anchor link
Het grote verschil is inderdaad, wie de print opdracht geeft. (en wie is in dit geval de server met PHP of de pc waarop de browser draait).

En is de oplossing nogal afhankelijk van de gebruikte hardware en het netwerk.

Zelf heb ik een setup waarbij de server buiten staat (in het buitenland zelfs) en waar de printers (A4 printer en een etiketten printer) in het netwerk op een kantoor in Nederland staan.

Die stap om van buitenaf in het interne netwerk te komen, heb jij niet.
Wel heb je de vraag hoe de printopdracht aan de printer gegeven kan worden door PHP.

In mijn setup kan ik een pdf-file aan CUPS(printer server software op de server waarop ook Apache draait) geven onder vermelding "voor printer X"
CUPS forwardt dat dan naar de printer.

MAar als het bijvoorbeeld een Word document zou zijn, wordt het moeilijker.
En ook als de printer niet rechstreeks een pdf begrijpt maar een andere datastroom wil hebben via een of andere driver.

Gebruikte hardware en software op de server is dus van belang.
(en ook of een systeembeheerder niet heeft ingesteld of een aanmelding van de gebruiker bij de printer (inloggen) nodig is)
 
Ben van Velzen

Ben van Velzen

08/10/2018 17:16:03
Quote Anchor link
Dit is inderdaad identiek aan wat wij doen in onze magazijnen. Pakbonnen, adreslabels, de hele boel gaat via CUPS vanaf (een) webserver via een tweede CUPS instantie in het magazijn naar de gewenste printer. Deze CUPS server kan in principe op een raspberry pi draaien, dus het kan erg eenvoudig. En Dymo printers kunnen gewoon door CUPS gestuurd worden.
 
Pascal Schuffelers

Pascal Schuffelers

08/10/2018 17:18:17
Quote Anchor link
De Dymo staat gewoon op de laptop , die ze daar gebruiken, via usb aangesloten.
Cups heb ik inderdaad op die RPI al staan.
Denk dat ik dan toch hier naar moet kijken, al zal ik wel een voorbeeld moeten kunnen vinden van een code die via CUPS zonder afdrukvoorbeeld iets af kan drukken.
 
Ben van Velzen

Ben van Velzen

08/10/2018 23:57:07
Quote Anchor link
Daar is niet bijster veel voor nodig, gewoon het lpr commando met de juiste switches.
 
Ivo P

Ivo P

09/10/2018 09:44:11
Quote Anchor link
ik heb even opgezocht: het commando dat ik gebruik:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
   $command = '/usr/bin/lp -n 1 -d NAAM_PRINTER_IN_CUPS  /path/to/een.pdf';
   exec($command);


-n 1: aantal afdrukken is 1 (soms ook meer dan 1 voor mijn situatie)
-d xxx: destination: welke printer.

nb: sommige van mijn printers snappen een pdf direct. Voor een nieuwe printer is een driver op de server van cups gezet om de printer het te kunnen laten snappen.

Overigens is dit een print opdracht die vanuit een CLI omgeving komt. Ik maak namelijk tot 10tallen pdf's aan die vervolgens via CUPS naar buiten gaan.

Dat duurt voor de gebruiker te lang, dus PHP roept een extern script aan dat doorloopt, terwijl het eerst aangeroepen php-script naar de gebruiker een "OK, we printen" pagina stuurt.

cups zet de opdracht in de wachtrij tot de printer beschikbaar is.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.