[Gelöst]Webservice Variant zum Drucker bzw. in Datei

2. September 2010 11:47

Hallo,
ich möchte mit Nav auf einen Webservice) zugreifen. Das klappt auch.
Als Ergebnis bekomme ich ein Ettikett zum Drucken.

So ist mein Aufruf
Code:


wsx   Automation   'Web Service Abstract Client Module'.WebServicesClient   


result1 := wsx.InvokeMethod( service, 'ffgetlabelxml', arguments1.List );


result1 ist vom Typ Variant.

Wie bekomme ich den Inhalt nun zum Drucker, bzw in eine Datei ?

Wenn ich den Inhalt mit

Code:
 Message ( format ( result1 ) )


anzeigen will bekomme ich die Fehlermeldung das nicht in Text konvertiert werden kann, da zulang


gruss
Jörg
Zuletzt geändert von Jörg Nissen am 3. September 2010 08:44, insgesamt 1-mal geändert.

Re: Webservice Variant zum Drucker bzw. in Datei

2. September 2010 11:53

Hallo,

was bekommst du denn überhaupt als Antwort vom Webservice?

Nach dem Parameter zu urteilen sieht das nach was XML- mäßigem aus. Versteht dein Durcker das überhaupt direkt? Müssen die Daten nicht erst für den Druker aufbereitet werden? Wie ist dein Drucker überhaupt konfiguriert? Was ist das für ein Drucker Zebra? ZPL? EPL?...

Viele Fragen, dann kann man vielleicht eine Antort geben.

Gruß, Fiddi

Re: Webservice Variant zum Drucker bzw. in Datei

2. September 2010 20:19

Hallo,
Danke fuer deine Antwort.
Ich übergebe xml. Zurück bekomme Daten für den Zebra Drucker fertig(ZPl) aufbereitet. Ich kann aber auch pdf Daten bekommen. Je nachdem was ich anfordere. Mir fehlt noch so völlig der Ansatz wie ich mit den Ergebnis arbeiten kann.

MfG Jörg

Re: Webservice Variant zum Drucker bzw. in Datei

2. September 2010 23:38

Hallo,

also wenn ich einen Zebra mit ZPL ansteuern soll, benötige ich normalerweise einen Zebra-Drucker, der als "Generic Text"- Drucker mit möglichst breitem Papier eingerichtet ist. Außerdem benötigt man einen Report, der aus etwa 40 bis 50 Zeilen Code (im wesentlichen ein CASE- Statement) besteht. Da ihr solche Etiketten wahrscheinlich nicht jeden Tag neu designt, reicht ein fest programmierter Report meistens volkommen aus. Einzige Ausnahme könnte eine komplizierte Grafik sein, die an den Drucker gesendet werden soll.
Wenn dein Webservice dir ZPL zurück gibt, schau dir die Daten an und lade dir vorher die ZPL-Referenz- PDFs von Zebra herunter, dann wirst du erkennen, wie einfach ZPL gestrickt ist.

Wenn du z.B. ein Artikeletikett mit Nr., Beschreibung und Beschreibung 2 ausgeben willst, benötigst du einen Report der Item als Basis und eine Integer-Subsection. Der Report gibt nur eine lange Textvariable TextVar aus, die mit der integer-Section verbunden ist. Die Integer-Section sollte auf Anzahl der Zeilen im Case-Statement gefiltert werden. Der Code des Integer- OnAfterGetRecord sieht in etwa folgendermaßen aus (ich hab gerade kein ZPL-Handbuch zur Hand):
Code:
Case Integer of
  1: TextVar := Initsequenz (Etiketteformat, Starposition des Etiketts,...); 
  2: Textvar := Drucksequenz (Font,Position,Größe,..)+Item."No.";
  3: Textvar := Drucksequenz (Font,Position,Größe,..)+Item.Description;
  4: Textvar := Drucksequenz (Font,Position,Größe,..)+Item."Description 2";
  5: Textvar := Anzahl der Etiketten setzen+ Kommando zum Etikettendruck;
end;


Da bastelt man vielleicht ein paar Stunden an dem ersten Rahmen rum. Wenn du das aber erst mal verstanden hast, kannst du Etiketten per so einem Report schneller erstellen, als mit irgend einem Designer.

Gruß, Fiddi

Re: Webservice Variant zum Drucker bzw. in Datei

3. September 2010 06:58

Hallo ,
danke für die Antwort.

Das ist mir bekannt. So machen wir es jetzt :-)

Der Webservice erstellt fertige Ettiketten mit dem Leitcode.
Sprich wir übergeben die Zieladresse und ein paar weitere Parameter und bekommen dann das Fertige Ettikett mit Barcode, Leitcode etc. zurück. Ebenso die Versandlisten oder Statische Daten.

gruss Jörg

Re: Webservice Variant zum Drucker bzw. in Datei

3. September 2010 08:44

Hallo,

ich habe das jetzt über einen Ado Stream gelöst.

adoStream.WriteText(wsx.InvokeMethod( service, 'ffgetlabelxml', arguments1.List ));
adoStream.SaveToFile('c:\SomeData.xml');


Vielen Dank
Jörg