[gelöst]PDF-Creator

Bild Microsoft Dynamics NAV 2009 (aka "NAV 6")
Forumsregeln
Impressum • Community-Knigge • Nutzungsbedingungen • Datenschutzrichtlinie

Bitte unbedingt angeben, ob sich eure Frage auf den RoleTailored-Client (RTC) oder den Classic-Client (CC) bezieht!

[gelöst]PDF-Creator

Beitragvon elf » 27. November 2012 09:15

Hallo Allerseits,

ich möchte den PDFCreator benutzen, um PDFs aus Reports zu erzeugen. ich habe dazu hier im Forum einiges gefunden und das auch soweit gut hingekriegt. Hier mein (test)Code:

Code: Alles auswählen
    Pfad := 'C:\Temp\';
    FileName := 'TestPdf.pdf';
    Ok := ERASE(Pfad+FileName);


    IF ISCLEAR(PDFCreator) THEN
      CREATE(PDFCreator);
    IF ISCLEAR(PDFCreatorError) THEN
      CREATE(PDFCreatorError);

    PDFCreatorError := PDFCreator.cError;

    IF NOT PDFCreator.cStart('/NoProcessingAtStartup',TRUE) THEN
      ERROR('Status: Error[' + FORMAT(PDFCreatorError.Number) + ']: ' + PDFCreatorError.Description);

    PDFCreatorOption := PDFCreator.cOptions;
    PDFCreatorOption.UseAutosave := 1;
    PDFCreatorOption.UseAutosaveDirectory := 1;
    PDFCreatorOption.AutosaveDirectory := Pfad;
    PDFCreatorOption.AutosaveFormat := 0; //PDF-Format
    PDFCreatorOption.AutosaveFilename := FileName;
    PDFCreator.cIsConverted := FALSE;
    PDFCreator.cOptions := PDFCreatorOption;

    PDFCreator.cClearCache();
    DefaultPrinter := PDFCreatorL.cDefaultPrinter; //Der System-Standarddrucker wird ziwschengespeichert
    PDFCreatorL.cDefaultPrinter := 'PDFCreator';
    PDFCreator.cPrinterStop := FALSE;

    REPORT.RUNMODAL(REPORT::"Debitor - Liste",TRUE,FALSE);
   
  // Hier PrĂĽfung einbauen!!!!

    Window.OPEN('Bitte warten, PDF wird erstellt #1# #2#...');
    WindowIsOpen := TRUE;

    //Auf Erstellen warten, bis PDF konvertiert ist oder 60 Sekunden um sind
    CounterL := 0;
    REPEAT
      SLEEP(1000);
      CounterL := CounterL + 1;
      Window.UPDATE(1,CounterL);
    UNTIL (PDFCreator.cIsConverted) OR (CounterL=60);

    //Abbruch prĂĽfen
    IF NOT PDFCreator.cIsConverted THEN
      ERROR('Die PDF-Datei konnte nicht erstellt werden!');


    // zurĂĽcksetzen
    PDFCreatorOption := PDFCreator.cOptions;
    PDFCreatorOption.UseAutosave := 0;
    PDFCreatorOption.UseAutosaveDirectory := 0;
    PDFCreator.cOptions := PDFCreatorOption;
    PDFCreatorOption.AutosaveDirectory := '';
    PDFCreatorOption.AutosaveFilename := '';
    PDFCreator.cOptions := PDFCreatorOption;

    //Beenden der PDF-Funktion
    PDFCreator.cPrinterStop := TRUE;
    PDFCreator.cClearCache();

    CounterL := 0;
    REPEAT
      SLEEP(200);
      CounterL := CounterL + 1;
      Window.UPDATE(2,CounterL);
    UNTIL (PDFCreator.cClose()) OR (CounterL = 30);

    IF CounterL = 30 THEN
      ERROR('Fehler beim Beenden vom PDFCreator');

    CLEAR(PDFCreator);
    IF WindowIsOpen THEN
      Window.CLOSE;
    WindowIsOpen := FALSE;
    HYPERLINK(Pfad+FileName);


Ich habe allerdings ein Problem: Wenn der Benutzer beim REPORT.RUNMOLDAL... einfach das Fenster zumacht, dann kriege ich das nicht mit. Ich habe keinen Weg gefunden herauszukriegen, ob da ĂĽberhaupt eine Spool-Datei angelegt wurde bevor der Konvertierungsvorgang gestartet wird. Das Programm geht also in den Loop wo es auf das Ende des Konvertierens wartet, nach 60 Sekunden kommt die entsprechende Fehlermeldung.

An der Stelle im Code wo " // Hier Prüfung einbauen!!!!" steht müsste eine Prüfung stattfinden können.

Hat jemand da entsprechende Erfahrunge bzw. weiss eine Lösung?

Danke
Zuletzt geändert von elf am 29. November 2012 09:20, insgesamt 1-mal geändert.
GruĂź aus Zossen bei Berlin
Eddie
Benutzeravatar
elf
 
Beiträge: 222
Registriert: 21. Dezember 2006 15:15
Wohnort: Zossen bei Berlin
Realer Name: Edgar Leifeld
Arbeitsort: Zossen bei Berlin
Bezug zu Microsoft Dynamics: Freiberufler
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV / BC

Re: PDF-Creator

Beitragvon Freestyler » 27. November 2012 09:34

Hallo,

Ich habe zwar keine Lösung, aber unsere Entwickler benützen für Kundenprojekte immer BullZip PDF Printer.
Vielleicht ist seine Handhabung in C/AL einfacher.
Schau dir das mal an, vielleicht hilft es.
Freestyler
Microsoft Partner
Microsoft Partner
 
Beiträge: 793
Registriert: 14. November 2006 22:07
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2013R2

Re: PDF-Creator

Beitragvon elf » 27. November 2012 14:11

danke, das hab' ich auch schon propbiert, mit BULLZIP ists das gleiche Problem wie mit PDFCreator.
GruĂź aus Zossen bei Berlin
Eddie
Benutzeravatar
elf
 
Beiträge: 222
Registriert: 21. Dezember 2006 15:15
Wohnort: Zossen bei Berlin
Realer Name: Edgar Leifeld
Arbeitsort: Zossen bei Berlin
Bezug zu Microsoft Dynamics: Freiberufler
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV / BC

Re: PDF-Creator

Beitragvon Kowa » 27. November 2012 15:28

Das "Erstellen abwarten" hatten wir hier heute.
Den Spooler kann man auĂźerdem noch auf "Created" abfragen.
PDFSpool.jpg
GruĂź, Kai

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, Messenger oder Telefon! DafĂĽr ist dieses Forum da.

Download: Dynamics NAV Object Text Explorer (Alternativlink). MVP Alumni
Benutzeravatar
Kowa
Moderator
Moderator
 
Beiträge: 7853
Registriert: 17. Juni 2005 17:32
Wohnort: Bremen
Realer Name: Kai Kowalewski
Arbeitsort: Osterholz-Scharmbeck
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC, NAV 2018 bis Navision 2.01

Re: PDF-Creator

Beitragvon elf » 28. November 2012 09:51

danke, genau das habe ich gesucht. Aber PDFCreatorSpoolInfo finde ich nicht! Die drei anderen Klassen (PDFCreator , PDFCreatorOption und PDFCreatorError) habe ich. Ich benutze den aktuellsten PDFCreator (Version 1.6). Gibts da noch eine andere Version? Oder ist das eine andere Automation? Auch Googeln bringt mich nicht weiter.
Ich habe das jetzt zwischenzeitlich so gelöst, das ich das Spoolverzeichnis öffne und nachsehe ob das was liegt oder nicht. Die beschriebene Lösung würde mir aber viel besser gefallen.
GruĂź aus Zossen bei Berlin
Eddie
Benutzeravatar
elf
 
Beiträge: 222
Registriert: 21. Dezember 2006 15:15
Wohnort: Zossen bei Berlin
Realer Name: Edgar Leifeld
Arbeitsort: Zossen bei Berlin
Bezug zu Microsoft Dynamics: Freiberufler
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV / BC

Re: PDF-Creator

Beitragvon Kowa » 28. November 2012 11:42

Ich habe mir lokal testweise 1.6 installiert, da sind diese Möglichkeiten leider verschwunden :shock: .
Produktiv im Einsatz ist Version 1.2.3, daher stammte das obige Beispiel.
PDFSpool123.jpg

In Version 1.3.2 gibt es noch andere Optionen:
PDFSpool132.jpg

In Version 1.6.0 dann keine.
PDFNoSpool160.jpg
GruĂź, Kai

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, Messenger oder Telefon! DafĂĽr ist dieses Forum da.

Download: Dynamics NAV Object Text Explorer (Alternativlink). MVP Alumni
Benutzeravatar
Kowa
Moderator
Moderator
 
Beiträge: 7853
Registriert: 17. Juni 2005 17:32
Wohnort: Bremen
Realer Name: Kai Kowalewski
Arbeitsort: Osterholz-Scharmbeck
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC, NAV 2018 bis Navision 2.01

Re: PDF-Creator

Beitragvon elf » 29. November 2012 09:20

danke nochmals. Aber da ich nicht auf eine alte version zurückgehen möchte, habe ich das jetzt so gelöst:

Code: Alles auswählen
    IF NOT PDFCreator.cIsConverted THEN BEGIN
      // Wenn noch nicht konvertiert ist, dann muss eine Spool-Datei vorhanden sein
      // wenn keine da ist, dann war entweder nix im Bericht, oder der User hat Abbruch geklickt
      // bzw. den Report nicht gestartet
      CLEAR(Verzeichnis);
      Verzeichnis.SETRANGE(Path,SpoolDirectory);
      Verzeichnis.SETRANGE("Is a file",TRUE);
      IF (Verzeichnis.COUNT=0) AND (NOT PDFCreator.cIsConverted) THEN // keine Spool-datei da und auch immer noch nicht konvertiert
        ERROR('Abbruch');
      CLEAR(Verzeichnis);

      //Auf Erstellen warten, bis PDF konvertiert ist
      Counter := 0;
      WHILE (NOT PDFCreator.cIsConverted) DO BEGIN
        FensterUpdate();// Hier wird nur was angezeigt
        SLEEP(100);
      END;


    END;
GruĂź aus Zossen bei Berlin
Eddie
Benutzeravatar
elf
 
Beiträge: 222
Registriert: 21. Dezember 2006 15:15
Wohnort: Zossen bei Berlin
Realer Name: Edgar Leifeld
Arbeitsort: Zossen bei Berlin
Bezug zu Microsoft Dynamics: Freiberufler
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV / BC

PDF-Creator Version 2.x

Beitragvon Kowa » 31. August 2017 11:39

Ab Version 2 ist die COM-Schnittstelle völlig überarbeitet worden. Zum Glück, bei der alten Version kam es gelegentlich zu Überlappungen von Dateinamen und Inhalten wenn viele PDFs auf einmal einstellt wurden und die Erstellung stockte. Das scheint jetzt behoben zu sein.
PDFcreator.png
PDFcreator.png (8.23 KiB) 4443-mal betrachtet

http://docs.pdfforge.org/pdfcreator/latest/de/pdfcreator/com-interface/
http://docs.pdfforge.org/pdfcreator/latest/de/pdfcreator/com-interface/user-manual/basics/conversion/
http://docs.pdfforge.org/pdfcreator/latest/de/pdfcreator/com-interface/user-manual/basics/convert-single-file/
http://docs.pdfforge.org/pdfcreator/latest/de/pdfcreator/com-interface/user-manual/basics/workflow-comparsion-v1-7-v2/

In NAV kann man das jetzt z.B. so umsetzen, das läuft in der Praxis auch im Batchbetrieb mit hunderten von mehrseitigen PDFs ohne Pause zwischendurch stabil.
Code: Alles auswählen
CLEAR(PDFCreatorQueue);
CLEAR(PDFCreator);

SLEEP(1000);

IF ISCLEAR(PDFCreator) THEN
  CREATE(PDFCreator);

IF ISCLEAR(PDFCreatorQueue) THEN BEGIN
  CREATE(PDFCreatorQueue);
   IF NOT PDFCreator.IsInstanceRunning THEN
    PDFCreatorQueue.Initialize();
END;

// Den PDFCreator-Drucker fĂĽr diesen Report in Tabelle "Printer Selection" eintragen
MyPDFReport.SETTABLEVIEW(MyTable);
MyPDFReport.USEREQUESTFORM(FALSE);
MyPDFReport.RUNMODAL;

REPEAT
  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(MyPDFPathAndFileName);
END;

// ReleaseCom muss immer erfolgen, auch wenn nichts zu drucken war, sonst blockiert der nächste Aufruf weil die PDFCreator-Instanz belegt ist
PDFCreatorQueue.ReleaseCom();



Im Bericht die gewünschte Seitengröße wie z.B. A4 fest vorgeben, es kann sonst zu falschen Seitenumbrüchen in der erzeugten PDF-Datei kommen. Eigentlich sollte die Seitengröße von den Druckereinstellungen übernommen werden, aber Bugs gibt es halt überall :mrgreen: .

Thema verschoben von 4.xx nach NAV 2009
GruĂź, Kai

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, Messenger oder Telefon! DafĂĽr ist dieses Forum da.

Download: Dynamics NAV Object Text Explorer (Alternativlink). MVP Alumni
Benutzeravatar
Kowa
Moderator
Moderator
 
Beiträge: 7853
Registriert: 17. Juni 2005 17:32
Wohnort: Bremen
Realer Name: Kai Kowalewski
Arbeitsort: Osterholz-Scharmbeck
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC, NAV 2018 bis Navision 2.01

Re: [gelöst]PDF-Creator

Beitragvon mikka » 4. September 2017 14:31

Danke Kowa :)

Genau das habe ich gesucht.
Welche Klassen sind:
- PDFCreatorQueue
-PDFCreator

VG mikka
GruĂź, Mikka

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Benutzeravatar
mikka
Microsoft Partner
Microsoft Partner
 
Beiträge: 1832
Registriert: 26. September 2005 11:54
Wohnort: Bremen
Realer Name: Michael
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.6, 3.7, 4, 5, 2009/13/15

Re: [gelöst]PDF-Creator

Beitragvon Kowa » 4. September 2017 14:44

mikka hat geschrieben:Welche Klassen sind:
- PDFCreatorQueue
-PDFCreator

PDFCreatorQueue -> Queue
PDFCreator -> PDFCreatorObj
GruĂź, Kai

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, Messenger oder Telefon! DafĂĽr ist dieses Forum da.

Download: Dynamics NAV Object Text Explorer (Alternativlink). MVP Alumni
Benutzeravatar
Kowa
Moderator
Moderator
 
Beiträge: 7853
Registriert: 17. Juni 2005 17:32
Wohnort: Bremen
Realer Name: Kai Kowalewski
Arbeitsort: Osterholz-Scharmbeck
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC, NAV 2018 bis Navision 2.01

Re: [gelöst]PDF-Creator

Beitragvon GeorgRost » 9. August 2020 20:34

Hallo Mikka,
ich habe deinen Code benutzt, er funktioniert aber aus irgendeinem Grunde bei uns nicht. Die Codeunit tut zwar, was sie soll, das Dokument wird auch abgespeichert, aber die Codeunit wird nicht mehr verlassen und hängt in einer Endlosschleife, warum auch immer. Was könnte das sein?
GruĂź, Georg
GeorgRost
 
Beiträge: 5
Registriert: 4. Januar 2011 12:31
Realer Name: ROland Stejskal
Arbeitsort: Dresden
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2009

Re: [gelöst]PDF-Creator

Beitragvon GeorgRost » 9. August 2020 22:43

Sorry, sollte an Kai gehen....:-(
GeorgRost
 
Beiträge: 5
Registriert: 4. Januar 2011 12:31
Realer Name: ROland Stejskal
Arbeitsort: Dresden
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2009

Re: [gelöst]PDF-Creator

Beitragvon Kowa » 10. August 2020 09:17

GeorgRost hat geschrieben:Was könnte das sein?

Da gibt es viele Ursachen. Das kann auch vom Codes des gedruckten Report selber kommen. Das hatte ich mal mit einem, der mandantenĂĽbergreifend aufgerufen wurde und Daten im anderen Mandanten zusammenstellen musste und intern eine Endlosschleife hatte.
Es ist ja ein Zähler eingebaut, der maximal 20 Sekunden versucht, eine Datei zu erstellen. Nach dem
Code: Alles auswählen
IF Seconds <= 20 THEN
kann man in einem zusätzlichen ELSE-Zweig auch ein ERROR-Abbruch einbauen. Dann sollte spätestens Schluss ein.
GruĂź, Kai

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, Messenger oder Telefon! DafĂĽr ist dieses Forum da.

Download: Dynamics NAV Object Text Explorer (Alternativlink). MVP Alumni
Benutzeravatar
Kowa
Moderator
Moderator
 
Beiträge: 7853
Registriert: 17. Juni 2005 17:32
Wohnort: Bremen
Realer Name: Kai Kowalewski
Arbeitsort: Osterholz-Scharmbeck
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC, NAV 2018 bis Navision 2.01

Re: [gelöst]PDF-Creator

Beitragvon GeorgRost » 12. August 2020 20:56

Danke Kai,
es ist merkwürdig. Auf einem anderen PC funktioniert das tadellos, obwohl beide PC's absolut die gleiche Datenbank und den gleichen PC-Creator -Release haben.Ich habe auch alle anderen PDF-Printer runtergeschmissen. Trotzdem, das Biest hängt.
GeorgRost
 
Beiträge: 5
Registriert: 4. Januar 2011 12:31
Realer Name: ROland Stejskal
Arbeitsort: Dresden
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2009


ZurĂĽck zu NAV 2009

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast