Hallo,
nachdem ich mich jetzt ein paar Monate in die Materie eingearbeitet habe, bin ich gerade vor einer Design-Entscheidung etwas unsicher, und frage euch lieber mal. Im Betrieb baue ich gerade eine Enterprise Anwendung mit Primefaces auf, was auch gut funktioniert. In der Anwendung können diverse Berichte abgerufen werden, welche auf einem Jasper Reports Server als PDF generiert werden, und vom der Anwendung nur noch parametrisiert abgerufen werden sollen. Dazu gehören auch Etiketten für die Produktion.
Ausdrucke aus einer Web Anwendung kann ich ja lediglich an den Browser übergeben, aber wenn ich die Anwender jedes mal noch alles auswählen lasse, vom Drucker bis zur Schublade, dann gehen die mir verständlicherweise an die Gurgel. Optimal wäre eine Lösung, dass einfach der Button "Etiketten drucken" gedrückt wird, und schon kommen die Etiketten aus der richtigen Schublade.
Erfahrungen im PDF-Druck habe ich bereits, es kommt PDFBox von Apache zum Einsatz, gedruckt wird über die javax.print* Klassen. Duplexdruck, Schubladenwahl, Druckerwahl, ist da ja alles kein Problem (zumindest bisher). Das Drucken möchte ich aber nicht aus der Enterprise Anwendung aus anstoßen, da hier ja ein Zugriff auf Systemebene erfolgen muss, was ich gerne da raus halten möchte, da ja eventuell mal der Server mit den Druckertreibern ein anderer sein kann, als der mit der Glassfish umgebung. Clustering würde so später wahrscheinlich auch nicht mehr funktionieren.
Mein erster Impuls wäre, eine normale Java-Anwendung zu schreiben und zentral auf einem Server auszuführen, welcher die nötigen Drucker und Treiber installiert hat. Diese bekommt dann über JMS die Informationen über einen Drucker, eine Schublade und die URL an der das PDF liegt und antwortet, wenn der Ausdruck erfolgt ist. Die Informationen über die Drucker müssten dann zentral erfasst werden, aber man hätte den Vorteil, für verschiedene Aktionen Standarddrucker zu definieren (z.B. Etiketten welche in Programm x von Benutzer y gedruckt werden, werden in der unteren Schublade im Produktionsgebäude z gedruckt). Darüber hinaus ist noch eine Portierbarkeit gegeben.
Alternativ könnte ich ein Java-Applet einbinden, dass auf die Drucker des Clients zugreifen darf. Da habe ich aber ein ungutes Gefühl, zum einen finde ich Applets persönlich einfach nicht so sauber, außerdem würde ich mein System dann wieder dezentralisieren.
Was haltet ihr von der Idee, wie läuft es bei euch? Habt ihr Erfahrungen mit dieser Lösung, oder mit anderen? Oder fallen euch Gründe dafür oder dagegen ein?
Mit freundlichen Grüßen,
Tim
nachdem ich mich jetzt ein paar Monate in die Materie eingearbeitet habe, bin ich gerade vor einer Design-Entscheidung etwas unsicher, und frage euch lieber mal. Im Betrieb baue ich gerade eine Enterprise Anwendung mit Primefaces auf, was auch gut funktioniert. In der Anwendung können diverse Berichte abgerufen werden, welche auf einem Jasper Reports Server als PDF generiert werden, und vom der Anwendung nur noch parametrisiert abgerufen werden sollen. Dazu gehören auch Etiketten für die Produktion.
Ausdrucke aus einer Web Anwendung kann ich ja lediglich an den Browser übergeben, aber wenn ich die Anwender jedes mal noch alles auswählen lasse, vom Drucker bis zur Schublade, dann gehen die mir verständlicherweise an die Gurgel. Optimal wäre eine Lösung, dass einfach der Button "Etiketten drucken" gedrückt wird, und schon kommen die Etiketten aus der richtigen Schublade.
Erfahrungen im PDF-Druck habe ich bereits, es kommt PDFBox von Apache zum Einsatz, gedruckt wird über die javax.print* Klassen. Duplexdruck, Schubladenwahl, Druckerwahl, ist da ja alles kein Problem (zumindest bisher). Das Drucken möchte ich aber nicht aus der Enterprise Anwendung aus anstoßen, da hier ja ein Zugriff auf Systemebene erfolgen muss, was ich gerne da raus halten möchte, da ja eventuell mal der Server mit den Druckertreibern ein anderer sein kann, als der mit der Glassfish umgebung. Clustering würde so später wahrscheinlich auch nicht mehr funktionieren.
Mein erster Impuls wäre, eine normale Java-Anwendung zu schreiben und zentral auf einem Server auszuführen, welcher die nötigen Drucker und Treiber installiert hat. Diese bekommt dann über JMS die Informationen über einen Drucker, eine Schublade und die URL an der das PDF liegt und antwortet, wenn der Ausdruck erfolgt ist. Die Informationen über die Drucker müssten dann zentral erfasst werden, aber man hätte den Vorteil, für verschiedene Aktionen Standarddrucker zu definieren (z.B. Etiketten welche in Programm x von Benutzer y gedruckt werden, werden in der unteren Schublade im Produktionsgebäude z gedruckt). Darüber hinaus ist noch eine Portierbarkeit gegeben.
Alternativ könnte ich ein Java-Applet einbinden, dass auf die Drucker des Clients zugreifen darf. Da habe ich aber ein ungutes Gefühl, zum einen finde ich Applets persönlich einfach nicht so sauber, außerdem würde ich mein System dann wieder dezentralisieren.
Was haltet ihr von der Idee, wie läuft es bei euch? Habt ihr Erfahrungen mit dieser Lösung, oder mit anderen? Oder fallen euch Gründe dafür oder dagegen ein?
Mit freundlichen Grüßen,
Tim