selectline-software / selectline-api

Apache License 2.0
24 stars 5 forks source link

wie funktioniert Print/PrintPdf ? #358

Open Benziner opened 6 months ago

Benziner commented 6 months ago

zu Printpdf:

Folgendes habe ich bereits ausprobiert: 1

in Swagger probiert. Die entsprechende Druckvorlage existiert: image

als Rückgabewert bekomme ich jetzt scheinbar die PDF: image

Ist es auch möglich die PDF direkt auf dem Server zu speichern? Also die API Funktion wird von einem Client ausgeführt, da werden offensichtlich Backendprozesse des Servers benutzt, kann der Server dann die PDF auch direkt auf einem Verzeichnis abspeichern? Oder ist das so gedacht, dass der Client die PDF als Textrückgabe bekommt und dann die PDF per weiterem Programmcode auf dem CLient gespeichert werden kann?

zu Print:

da habe ich folgendes probiert: image

und bekomme ständig Internal server error zurück: image

Wenn ich das hier mache (einen Druckernamen hinterlegen, der auf dem Server eingerichtet ist): image

bekomme ich denselben Fehler: image

image

Nutze ich einen Drucker, der beim Client eingerichtet ist, ändert das auch nichts, der Fehler bleibt exakt der selbe. Deshalb meine Frage: Wie funktioniert das? geht das auf einen Drucker auf dem Client oder auf dem Server? Muss ich bei PrintTarget überhaupt einen Druckernamen angeben oder etwas anderes?

MatthiasGuse commented 6 months ago

Hi,

der erste Aufruf war schon korrekt und lieferte auch ein PDF zurück: grafik Swagger kann dies nur nicht anzeigen. Daher ist soweit erstmal alles korrekt. Postman zeigt es bspw. korrekt an. Es gibt bestimmt auch noch andere Tools oder evtl. auch BrowserPlugins, die das können.

Viel Erfolg weiterhin

Benziner commented 6 months ago

Danke! Das beantwortet aber leider nur teilweise meine Fragen:

zu Printpdf: Ist es auch möglich die PDF direkt auf dem Server zu speichern? Also die API Funktion wird von einem Client ausgeführt, da werden offensichtlich Backendprozesse des Servers benutzt, kann der Server dann die PDF auch direkt auf einem Verzeichnis abspeichern? Oder ist das so gedacht, dass der Client die PDF als Textrückgabe bekommt und dann die PDF per weiterem Programmcode auf dem CLient gespeichert werden kann?

zu Print: Nutze ich einen Drucker, der beim Client eingerichtet ist, ändert das auch nichts, der Fehler bleibt exakt der selbe. Deshalb meine Frage: Wie funktioniert das? geht das auf einen Drucker auf dem Client oder auf dem Server? Muss ich bei PrintTarget überhaupt einen Druckernamen angeben oder etwas anderes?

MatthiasGuse commented 6 months ago

Sorry, ich hatte es so verstanden, dass "Print" alternativ zu "PrintPDF" versucht wurde.

zu Printpdf: Hier erfolgt die Rückgabe ausschließlich per API. Speichern in Datei funktioniert hier nicht, sondern nur mit "Print".

zu Print: Die möglichen Werte für PrintTarget sind hier zu finden: https://demo.slmobile.de/demoApi/Help/ResourceModel?modelName=PrintTarget "Printer" und "File" sollten hier die beiden Werte sein, die Sie interessieren und auch nur Sinn machen. Verfügbar sind die Drucker des Servers auf dem die API installiert und eingerichtet ist. Mein Vorschlag wäre den Druck als User, der mit der API verbunden ist, auf dem Server mal direkt in der Wawi durchzuführen. Evtl. ist hier kein Standarddrucker hinterlegt. Alternativ können Sie auch hier den Drucker festlegen: grafik

Wenn Sie "File" benutzen, muss die Vorlage so eingerichtet sein, dass die PDF-Datei ohne ein Fenster abgelegt werden kann. Hier ist also der Pfad und der Dateiname (eindeutig) im Formluar anzugeben. Wenn die Ablage fensterlos in der Wawi funktioniert, soll das auch per API möglich sein.

Viele Grüße

Benziner commented 6 months ago

Danke das hat das Problem erst mal gelöst. Die Thematik mit dem Standarddrucker wäre bestimmt auch gut in der Doku aufgehoben :). Zum Thema PDF ohne Fenster ablegen möchte ich noch ergänzen (bitte korrigieren Sie mich, wenn ich etwas falsches schreibe), dass es hierbei um die Sonderplatzhalter im Formulareditor von SelectLine geht. Wenn man dort ein Formelfeld auswählt, kann man im Feld "Name" Sonderplatzhalter auswählen, z.B. DateiPDF. Die Onlinehilfe liefert dazu folgendes Beispiel: [V:1000::DateiPDF:2:0::"C:\Temp\"+({.Adressnummer}+"_"+{.Belegnummer}+".pdf")] So werden im Ordner C:\Temp\ automatisch die PDF-Dateien beim Druck in eine Datei abgelegt. ACHTUNG: das habe ich mit der API jetzt noch nicht getestet, ob das entsprechend funktioniert, aber wurde sicher von SelectLine Seite getestet.

alexanderwilhelm commented 5 months ago

Wie funktioniert denn der Print-Aufruf mit PrinterTarget 'Email'? Ich habe versucht eine Rechnung damit zu verschicken. Es kommt aber nur eine HTTP Response 204 No Content zurück. Beim Kunden habe ich eine Email-Adresse angegeben.

Micha-Richter commented 5 months ago

Wird denn die Mailadresse des Kunden auch in die E-Mail-Platzhalter in der Druckvorlage übernommen bzw. sind die Platzhalter überhaupt in der Druckvorlage vorhanden?