Home › Forum › Nuclos Konfiguration › Formulare › Automatisches Drucken nach Statusübergang
- Dieses Thema hat 5 Antworten und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 7 Jahren, 1 Monat von
Nick Röder.
-
AutorBeiträge
-
3 November 2016 um 16:47 Uhr #9005
Ronald Sedelies
TeilnehmerHallo!
Ich versuche nach einem Statusübergang einen Lieferschein zu drucken.
Dafür habe ich folgende Methode:
public static void print(Lieferschein lieferschein) throws BusinessException {
NuclosFile result;
Mapparameter = new HashMap ();
parameter.put(„id“, lieferschein.getId());
result = PrintoutProvider.run(LieferscheinPO.Druck, lieferschein.getId(), parameter);
FileProvider.print(result, „EPSON_WF_3640_Series“);
}Es gibt keinen Fehler, eine pdf Datei wird in das Nuclos Datenverzeichnis geschrieben, aber es wird nichts ausgedruckt.
Wenn ich keinen Drucker angebe:
FileProvider.print(result);
bekomme ich eine Exception (siehe Anhang).Der Ausdruck direkt aus der Formulardefinition (zum Testen) funktioniert übrigens ohne Probleme.
Ich meine auch, dass es schon mal geklappt hat. Zur Zeit benutze ich
Nuclos V4.11.2 (2016-09-30 11:23:53), JRE Version 1.8.0_101. Der Server benutzt jdk1.7.0_80.Ich hoffe, es kann jemand helfen.
Gruß
Ronald
Attachments:3 November 2016 um 17:31 Uhr #9006Nick Röder
TeilnehmerAm Besten sie nutzen den Druckdienst (Administration) um die verfügbaren Drucker zu finden.
Im entsprechenden Report kann ein Standarddrucker hinterlegt werden. Dieser fehlt vermutlich im Report.
Über den Fileprovider können dann aber noch die Parameter verändert werden
z.B.
org.nuclos.api.report.OutputFormat of = FormularRechnungPO.Formular_Rechnung;
//PrintProperties aus dem OutputFormat des Reports holen
PrintProperties properties = of.getProperties();
properties.setPrintServiceId(uidDrucker);
properties.setTrayId(uidDruckerfach);
NuclosFile fDoc = PrintoutProvider.run(of , boRechnung.getId());
FileProvider.print(fDoc, properties);wobei die uidDrucker und uidDruckerfach eben aus dem Druckdienst zu holen wären. Geht über das Objekt nuclosprintservice.
3 November 2016 um 19:01 Uhr #9007Ronald Sedelies
TeilnehmerVielen Dank für die schnelle Antwort.
Ich habe einen Druckdienst eingerichtet, mit ist aber nicht klar, wie man damit einen bestimmten Drucker ansprechen kann. Es gibt ja nur Name und Beschreibung. Muss der Name dem Druckernamen im System (EPSON WF-3640 Series) oder dem Gerätenamen (EPSON_WF_3640_Series) entsprechen?3 November 2016 um 19:39 Uhr #9008Nick Röder
TeilnehmerSie können nur eine UID an die properties übergeben. D.h. entweder sie setzen den Drucker gleich beim Report als Default Printer ein, dann müssen sie nichts mehr machen.
Wenn Sie den Drucker ändern wollen, dann müssen Sie den Drucker entweder manuell zuweisen. Es empfiehlt sich dies z.B. beim Berarbeiter als Dropdown zu hinterlegen oder direkt in der Rechnung.
Ansonsten müssten Sie die UID über eine Datenquelle holen der Sie den Druckernamen als Parameter übergeben
3 November 2016 um 20:07 Uhr #9009Ronald Sedelies
TeilnehmerMeine Frage ging in eine andere Richtung. Die Druckdienste (deren UID ja dann übergeben wird) müssen doch irgendwie mit einem Systemdrucker verbunden werden. Ich nehme mal an, das passiert über den Gerätenamen (EPSON_WF_3640_Series) im Feld „Name“.
Wenn ich im Report den erstellten Druckdienst einstelle und Clientdrucker als Ausgabemedium auswähle und den Report ausführe, funktioniert es auch. Aber bei der programmatischen Ausführung FileProvider.print(fDoc, properties); passiert einfach nichts: Obwohl die properties mit den meiner Meinung nach richtigen Infos gefüllt sind (per debugging geprüft) und keine Exception geworfen wird, wird weder ein Druckdialog geöffnet noch das Dokument ausgedruckt.
Ich habe keine Idee mehr, vielleicht sollte ich Nuclos noch mal neu installieren.
Ich arbeite übrigens unter OS X 10.11.6.3 November 2016 um 20:29 Uhr #9010Nick Röder
Teilnehmerlassen Sie sich doch mal den Parameter
properties.getPrintServiceId();
ausgeben und prüfen Sie, welche UID da drinnen steht. Liegt nicht am Mac, habe ich auch 😉
-
AutorBeiträge