[gelöst]pdf drucken aus NAV

31. Oktober 2018 13:23

Hallo zusammen,
ich würde gerne über NAV ein PDF drucken.
Dazu gibt es ja viele Beitrage.
Ich habe mir das abgeschaut von http://www.waldo.be/2015/12/21/print-any-document-any-extension/

Als ersten Schritt habe ich nur die 2te funktion kopiert. (Ohne Tryfunction)
Das sieht der Code so aus:
Code:
ProcessStartInfo := ProcessStartInfo.ProcessStartInfo(Path);
WITH ProcessStartInfo DO BEGIN
  Verb := 'Print';
  CreateNoWindow := TRUE;
  WindowStyle := ProcessWindowStyle.Hidden;
END;
Process.Start(ProcessStartInfo);


Als Drucker habe ich leider auf unserem Entwicklungsserver nur den Microsoft XPS Document Writer. Selber kann ich da auch keinen PDF Creator oder ähnliches installieren.
Zum Problem. Wenn ich den Code ausführe passiert nix. Auch kein Fehler.
Jetzt weiß ich nicht ob das mit dem Drucker einfach nicht funktioniert oder ob der Code falsch ist.
Hat hier jemand erfahrung?

Danke für die Unterstützung.

Grüße
Zuletzt geändert von ITNoob am 31. Oktober 2018 15:35, insgesamt 1-mal geändert.

Re: pdf drucken aus NAV

31. Oktober 2018 13:41

Hallo,

was möchtest du denn machen? Willst einen NAV-Report als PDF drucken oder willst du irgendein (PDF-)Dokument, das auf deinem System liegt über NAV drucken.
Wenn letzteres der Fall ist, dann liegst du mit dem Link von waldo richtig.
Wenn ersteres der Fall ist, dann geht das wesentlich einfacher mit "SAVEASPDF".

Re: pdf drucken aus NAV

31. Oktober 2018 13:53

Hallo,
ich möchte irgend eine PDF Datei drucken. Genauer soll das beim Drucken eines Reports mitgedruckt werden.

Re: pdf drucken aus NAV

31. Oktober 2018 14:00

schau doch mal diesen Beitrag an:
viewtopic.php?f=64&t=35260

Re: pdf drucken aus NAV

31. Oktober 2018 14:09

Hallo JRenz,
danke für die Antowort. Genau diese Anforderung habe ich auch.
Mein Problem ist aber schon, dass ich nicht mal eine normale pdf Datei ausgedruckt bekomme.
Ich habe das in eine CU gepackt und einen fixen Pfad angegeben. Und dann die Funktion ausgeführt. Allerdings ist wie gesagt nichts passiert. Auch kein Fehler oder sonst was.
Mit dem Sumatra PDF habe ich es allerdings noch nicht probiert.

Grüße

Re: pdf drucken aus NAV

31. Oktober 2018 14:18

Hallo,

so einfach funktioniert das bei PDFs leider nicht.
Wie das drucken funktioniert, hängt im wesentlichen vom verwendeten PDF-Reader ab.
Der Acrobat- Reader erfordert auch noch eine spezielle Ansteuerung je nachdem wie und wo gedruckt werden soll.

Dann musst du noch prüfen, wo deine PDFs liegen. Ein PDF- Druck kann nur auf dem Client erfolgen. Die PDF muss also vom Client über den gleichen Pfad lesbar sein, im Zweifel als vorher vom Server auf den Client geladen werden.

Gruß Fiddi

Re: pdf drucken aus NAV

31. Oktober 2018 15:00

Hallo,
steht in dem Blog nicht, dass der Code von Waldo alles druckt, solang du eine Software auf dem PC hast die den Format drucken?
Was ich so auch noch als Problem sehe ist dass man oft den Pfad für Adobe Reader angeben muss. Aber der muss ja nicht immer der gleiche sein?!

Grüße

Re: pdf drucken aus NAV

31. Oktober 2018 15:35

Ich hab eine Lösung gefunden

Code:
OBJECT Codeunit 50507 Print Document
{
  OBJECT-PROPERTIES
  {
    Date=20.04.12;
    Time=08:07:15;
    Modified=Yes;
    Version List=;
  }
  PROPERTIES
  {
    OnRun=VAR
            FileName@1000000000 : Text[250];
          BEGIN
            FileName := 'c:\Temp\Demo.pdf';
            PrintDocument(FileName, '', 10000);
          END;

  }
  CODE
  {

    PROCEDURE PrintDocument@1000000001(FileName@1000000000 : Text[250];PrinterName@1000000003 : Text[250];TimeoutInMs@1000000004 : Integer);
    VAR
      Process@1000000002 : DotNet "'System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Diagnostics.Process" RUNONCLIENT;
      StartInfo@1000000001 : DotNet "'System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Diagnostics.ProcessStartInfo" RUNONCLIENT;
      PrinterSettings@1000000005 : DotNet "'System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.System.Drawing.Printing.PrinterSettings" RUNONCLIENT;
    BEGIN
      IF PrinterName = '' THEN BEGIN
        // Falls kein Drucker angegeben, den Standarddrucker verwenden
        PrinterSettings := PrinterSettings.PrinterSettings;
        PrinterName := PrinterSettings.PrinterName;
      END;

      StartInfo := StartInfo.ProcessStartInfo;
      StartInfo.Verb := 'PrintTo';
      StartInfo.FileName := FileName;
      StartInfo.Arguments := '"' + PrinterName + '"';

      Process := Process.Process;
      Process.StartInfo := StartInfo;

      Process.Start;
      IF NOT Process.WaitForExit(TimeoutInMs) THEN BEGIN
        Process.Kill;
      END;
    END;

    BEGIN
    END.
  }
}


das findet man so auch im Internet. Eigentlich habe ich gedacht, dass das identisch mit meiner Lösung ist. Aber ist wohl nicht so.
Danke für die Unterstützung