mein Ziel ist es, durch einen NAS eine vorhandene PDF Datei auszudrucken.
Ich habe zum Drucken beliebiger Dateien mit Hilfe von DotNet einige Hinweise gefunden.
https://www.comporsys.de/dynamics-nav-b ... er-dateien
Mein Problem ist, dass es zwar unter einem RTC gut funktioniert, aber nicht unter einem NAS.
Zum Drucker auf Server (Abfrage über GUIALLOWED = FALSE) wird folgende Funktion verwendet. Für den Druck über den RTC sieht der Code quasi gleich aus.
PrintFileName verweist auf den Ort der PDF Datei. Den in der CU 1 durch FindPrinter gefundene Druckernamen hole ich mir über ein single instance Codeunit ab.
- Code: Alles auswählen
LOCAL PrintFileServer(PrintFileName : Text)
//DotNet Variablen auf RunOnClient = Nein
IF NOT FileMgt.ServerFileExists(PrintFileName) THEN BEGIN
MESSAGE(STRSUBSTNO(Text000,PrintFileName));
EXIT;
END;
//Holt den Druckernamen des gefundenen Druckers aus der CU1
ItemPrinterSelectionMgt.GetPrinterName(PrinterName);
StartInfo := StartInfo.ProcessStartInfo;
IF NOT Preview THEN BEGIN
StartInfo.Verb := 'PrintTo';
StartInfo.Arguments := '"' + PrinterName + '"';
END;
StartInfo.FileName := PrintFileName;
Process := Process.Process;
Process.StartInfo := StartInfo;
Process.Start;
IF NOT Process.WaitForExit(7000) THEN BEGIN
Process.Kill;
END;
Die DotNet Variablen sind RunOnClient = No.
- Code: Alles auswählen
Name DataType Subtype Length
Process DotNet System.Diagnostics.Process.'System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
StartInfo DotNet System.Diagnostics.ProcessStartInfo.'System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
PrinterSettings DotNet System.Drawing.Printing.PrinterSettings.'System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
Der Prozess zum Drucken läuft über einen NAV. Diesen Prozess konnte ich bereits debuggen. Ich konnte sehen, dass der korrekte Druckername geholt wurde (genau so, wie der Druckername auch auf dem NST-Server vorhanden ist).
Den übergebenen Dateinamen habe ich ebenfalls geprüft. Die PDF Datei liegt an dem angegeben Temp-Ordner auf dem Server.
Leider stürzt der Debugger bei der Zeile Process := Process.Process mit der Meldung "Schwerwiegender Debugger-Fehler" ab.
Auf dem Server ist Adobe Reader installiert. Auf dem Server habe ich bereits manuell eine PDS auf dem besagten Drucker erfolgreich ausgegeben.
Den Drucker habe ich auf dem Server angehalten, um zu sehen, ob etwas in der Druckerwarteschlage auftaucht. Was aber nicht der Fall ist.
Hat jemand schon mal ein ähnliches Szenario erfolgreich unter NAV 2016 abgebildet?
Funktioniert diese Art des Druckern vielleicht gar nicht unter einem NAS?
Gruß
Dirk