PDF Creator aus RTC-Umgebung heraus starten

5. März 2021 10:23

Hallo zusammen,

ich möchte gerne die Automation zum PDFCreator (Version 2.3) aus dem RTC heraus ansprechen. Es soll eine Datei (vorher über report.SAVEASPDF erstellt) gedruckt werden. Im Standardprofil ist ein mehrseitiges Briefpapier hinterlegt (nein - ich bekomme das nicht anders in meinen Report).
Im Forum habe ich hier ein Beispiel für Quellcode gefunden: viewtopic.php?f=7&t=18182

Etwas abgewandelt sieht es bei mir so aus:

Code:
// alles auf Anfang ...
CLEAR(PDFCreatorQueue);
CLEAR(PDFCreator);

SLEEP(1000);

IF ISCLEAR(PDFCreatorQueue) THEN
  CREATE(PDFCreatorQueue);

// *** Erläuterung siehe unten ***
  PDFCreatorQueue.Initialize();

SLEEP(1000);

IF ISCLEAR(PDFCreator) THEN
  CREATE(PDFCreator);

IF CONFIRM('AddFileToQueue',TRUE) THEN;
PDFCreator.AddFileToQueue('C:\Temp\TestfileOnServer.pdf');

// warten auf Job und abarbeiten ...
Seconds := 0;
REPEAT
  SLEEP(1000);
  Seconds += 1;
UNTIL (PDFCreatorQueue.WaitForJob(10)) OR (Seconds > 20);
IF Seconds <= 20 THEN BEGIN
  PrintJob := PDFCreatorQueue.NextJob;
  PrintJob.SetProfileByGuid('DefaultGuid');
  PrintJob.SetProfileSetting('OpenViewer','false');
  PrintJob.ConvertTo('C:\Temp\TestFileOnClient.pdf');
END;

// aufräumen ...
PDFCreatorQueue.ReleaseCom();


***
ISCLEAR(PDFCreator) ist in diesem Moment = true, trotzdem kommt beim Initialisieren der Queue folgender Fehler:
Fehler beim Initialisieren der Queue.png


Es läuft also scheinbar noch außerhalb meines Nav-Clients eine Instanz des PDF Creators. Damit wird die PDFCreatorQueue nicht initialisiert und nichts geht... Hat jemand eine Idee, wie man das lösen kann?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: PDF Creator aus RTC-Umgebung heraus starten

11. März 2021 13:17

Eventuell ist das folgende eine Lösung für dich:

Hier habe ich ein Code-Snippet gepostet, um mit der itextsharp Bibliothek PDFs zu mergen: viewtopic.php?p=142451#p142451
Bin mir nicht 100%ig sicher, aber damit kannst du bestimmt auch ein Briefpapier einschleusen.

Im Anschluss dann so drucken:

Code:
Name   DataType   Subtype   Length
FileManagement   Codeunit   File Management   
pdfium_Document   DotNet   PdfiumViewer.PdfDocument.'PdfiumViewer, Version=2.13.0.0, Culture=neutral, PublicKeyToken=91e4789cfb0609e0'   
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'   


Code:
PrintPdfDocument(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);


Grüße