Seite 1 von 1
Vorhandene PDF's aus NAV drucken
Verfasst: 11. Juni 2019 14:19
von rotsch
Hallo zusammen
Ich bin auf der Suche nach einer Lösung, mit welcher sich vorhandene PDF's direkt aus NAV drucken lassen. Die Datein liegen in einem eigenen Verzeichnis auf dem Server. Hintergrund ist, dass in NAV zwar Rechnungen entstehen, diese aber aus einem 3.System stammen, welches auch die fertigen PDF's liefert, die gedruckt werden müssen. Der Druck soll schnell und im Hintergrund erfolgen, also ohne User-Interaktion.
Hat vielleicht jemand Erfahrung damit und kann mir einen Tipp dazu geben?
Re: Vorhandene PDF's aus NAV drucken
Verfasst: 11. Juni 2019 14:30
von fiddi
Hallo,
es gibt die Möglichkeit dem Acrobat Reader per Kommandozeilenparameter zu sagen, dass er eine PDF drucken soll.
Das macht aber nur Spaß, wenn der Drucker auf dem gedruckt werden soll fix ist. Ansonsten musst du den Reader jedes mal manuell schließen, damit NAV weiter arbeitet, oder du hast irgendwann zig Reader offen.
Gruß Fiddi
Re: Vorhandene PDF's aus NAV drucken
Verfasst: 11. Juni 2019 14:40
von m_schneider
Ich empfehle Foxit-Reader oder Sumatra PDF. Mit denen ist es möglich per Kommandozeile zu drucken.
Dann brauchst du ein - zwei Funktionen, welche dir die PDFs auf den Drucker schmeißen. Per .NET mit ProcessStart.
http://www.navisionworld.com/2017/09/how-to-print-remote-file-from-nav.htmlhttps://stackoverflow.com/questions/18378271/dynamics-nav-rtc-command-line-parameter-passing
Re: Vorhandene PDF's aus NAV drucken
Verfasst: 11. Juni 2019 14:41
von rotsch
Danke Fiddi, das scheint mir aber nicht gerade praktikabel zu sein, bei einigend tausend Dateien pro Tag.
Der Drucker ist sicher sehr schnell, aber sonst?
Re: Vorhandene PDF's aus NAV drucken
Verfasst: 11. Juni 2019 14:45
von Timo Lässer
https://forum.mibuso.com/discussion/com ... ent_142121- Code:
PrintFile(PrintThisFile : Text[250])
IF ISCLEAR(objShell) THEN
CREATE(objShell);
SplitDirFile(PrintThisFile,Dir,FileName);
objFolder := objShell.NameSpace(Dir);
objFolderItems := objFolder.Items;
objFolderItem := objFolderItems.Item(FileName);
objFolderItem.InvokeVerb('PRINT');
objVerbs := objFolderItem.Verbs;
Used variables:
Name DataType Subtype Length
objShell Automation 'Microsoft Shell Controls And Automation'.Shell
objFolder Automation 'Microsoft Shell Controls And Automation'.Folder
objFolderItems Automation 'Microsoft Shell Controls And Automation'.FolderItems
objFolderItem Automation 'Microsoft Shell Controls And Automation'.FolderItem
objVerbs Automation 'Microsoft Shell Controls And Automation'.FolderItemVerbs
Dir Text 250
FileName Text 250
Re: Vorhandene PDF's aus NAV drucken
Verfasst: 11. Juni 2019 14:48
von m_schneider
rotsch hat geschrieben:Danke Fiddi, das scheint mir aber nicht gerade praktikabel zu sein, bei einigend tausend Dateien pro Tag.
Also zumindest mit dem Foxit habe ich da ca 800 PDfs pro Tag gedruckt. Ohne Probleme.
Das funktioniert, hat jedoch den Nachteil, das der Drucker nicht definiert werden kann.
Re: Vorhandene PDF's aus NAV drucken
Verfasst: 11. Juni 2019 14:53
von rotsch
Ist 'Microsoft Shell Controls And Automation' schnell genug? Und irgendwie habe ich in Erinnerung, dass 'Shell' veraltet ist. Oder irre ich mich da?
Re: Vorhandene PDF's aus NAV drucken
Verfasst: 11. Juni 2019 15:01
von fiddi
Und irgendwie habe ich in Erinnerung, dass 'Shell' veraltet ist. Oder irre ich mich da?
So ist es.
Evtl findest du ja auch einen Drucker, der PDF direkt verarbeiten kann (Kyocera soll so etwas können). Ansonsten gibt es keinen - mir bekannten - Weg, als das über die Kommandozeile zu machen
Gruß Fiddi
Re: Vorhandene PDF's aus NAV drucken
Verfasst: 11. Juni 2019 15:11
von m_schneider
rotsch hat geschrieben:Ist 'Microsoft Shell Controls And Automation' schnell genug? Und irgendwie habe ich in Erinnerung, dass 'Shell' veraltet ist. Oder irre ich mich da?
Ja. Jedoch kannst du auch Dotnet verwenden. Siehe meine Links oben.
https://demiliani.com/2018/07/11/dynamics-365-business-central-on-premise-extension-for-printing-external-documents/
Re: Vorhandene PDF's aus NAV drucken
Verfasst: 11. Juni 2019 15:29
von Raik Zobel
Schau mal nach PdfiumViewer:
https://github.com/pvginkel/PdfiumViewer /
https://github.com/pvginkel/PdfiumBuildDamit könntest du so eine Funktion bauen:
- Code:
PrintPdfDocumentOnClient(FullPath : Text;Printername : Text) : Boolean
printerSettings := printerSettings.PrinterSettings();
IF Printername <> '' THEN
printerSettings.PrinterName := Printername;
IF NOT printerSettings.IsValid THEN
ERROR('Druckeinstellungen sind ungültig.');
pdfium_Document := pdfium_Document.Load(FullPath);
printDocument := pdfium_Document.CreatePrintDocument();
WITH printDocument DO BEGIN
PrinterSettings := printerSettings;
DocumentName(FileManagement.GetFileName(FullPath));
Print();
END;
EXIT(TRUE);
- Code:
Name DataType Subtype Length
FileManagement Codeunit File Management
printerSettings DotNet System.Drawing.Printing.PrinterSettings.'System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
printDocument DotNet System.Drawing.Printing.PrintDocument.'System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
pdfium_Document DotNet PdfiumViewer.PdfDocument.'PdfiumViewer, Version=2.13.0.0, Culture=neutral, PublicKeyToken=91e4789cfb0609e0'
Re: Vorhandene PDF's aus NAV drucken
Verfasst: 11. Juni 2019 15:36
von rotsch
Danke für die vielen Tips, werde mich da mal durcharbeiten und sehen, was am besten passt
Re: Vorhandene PDF's aus NAV drucken
Verfasst: 17. Juni 2019 10:28
von Steini
Versuche es mal bspw. mit diesen .NET-Komponenten. Damit kannst du die PDF Dokumente direkt in deiner Anwendung öffnen und drucken, ist vermutlich stabiler als über Commandline. Nutze das teilweise auch um PDF Dokumente in PNG zu konvertieren, so lassen sich externe PDF Daten in vorhandene RDLC Reports einbetten:
http://www.o2sol.com/products.htm