PDF ausdrucken ohne es anzeigen zu lassen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von mgbig.

    PDF ausdrucken ohne es anzeigen zu lassen

    Moin

    Ich erstelle mit MigraDocs und PDFSharp PDF Datein und das geht auch gut. Es gibt Dateien, die will ich aber gar nicht angezeigt bekommen, sondern direkt drucken.
    Dafür habe ich jetzt SumatraPDF gefunden. blog.kowalczyk.info/software/sumatrapdf
    Außerdem habe ich gefunden, dass man mit diesen Befehl:
    SumatraPDF.exe -silent -exit-on-print -print-to-default {DATEINAME}
    Direkt drucken kann! Soweit so gut!
    Wenn ich das von der Kommandozeile mache klappt es prima, nicht aber aus VB. Was mache ich falsch?

    VB.NET-Quellcode

    1. Dim drucken As String = "C:\projekte\SumatraPDF\SumatraPDF.exe -silent -exit-on-print -print-to-default C:\Rechnung.pdf"
    2. Process.Start(drucken)

    (ich habe die portable Version von SumatraPDF genommen)

    Und dass ist die Fehlermeldung dazu:

    Quellcode

    1. Ein Ausnahmefehler des Typs "System.ComponentModel.Win32Exception" ist in System.dll aufgetreten.
    2. Zusätzliche Informationen: Das System kann die angegebene Datei nicht finden


    Wenn ich nur schreibe:

    VB.NET-Quellcode

    1. Dim drucken As String = "C:\projekte\SumatraPDF\SumatraPDF.exe"
    2. Process.Start(drucken)

    öffent sich SumtraPDF. Aber die PDF Datei liegt auch dort wo sie hin soll..... Ich hoffe, es ist nur ein Denkfehler. Und wenn mir jemand sagt wie ich mit einem anderen PDF Reader drucke ohne Anzeige ist das auch ok!
    Ich bin Umsteiger: Früher VB 4.0 prof, heute VB NET unter Studio 2019 Community Edition (und da noch ein Greenhorn :D )
    Argumente müssen am besten bei Process.StartInfo.Arguments festgelegt werden. Du musst also eine Process-Instanz machen und dann die Argumente etc. setzen.
    ~ Alex-Digital :D

    if(!Internet.VBP.Get<User>("Alex-Digital").IsOnline) this.Close(); :D

    mgbig schrieb:

    direkt drucken
    geht so:

    VB.NET-Quellcode

    1. Dim drucken As String = "C:\projekte\SumatraPDF\SumatraPDF.exe"
    2. Dim pr = New Process
    3. pr.StartInfo.FileName = drucken
    4. pr.StartInfo.Verb = "Print"
    5. pr.Start()
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Moin und Danke soweit.

    @RodFromGermany
    Das hat leider nur diese Fehlermeldung hervorgerufen:

    Quellcode

    1. Ein Ausnahmefehler des Typs "System.ComponentModel.Win32Exception" ist in System.dll aufgetreten.
    2. Zusätzliche Informationen: Der angegebenen Datei ist keine Anwendung zugeordnet


    Aber so gehts:

    VB.NET-Quellcode

    1. Process.Start("C:\projekte\SumatraPDF\SumatraPDF.exe", "-silent -exit-on-print -print-to-default C:\Rechnung.pdf")


    Ich hatte auch versucht das hier einzufügen:

    VB.NET-Quellcode

    1. pr.StartInfo.Arguments = "C:\Rechnung.pdf"


    gab aber die gleiche Fehlermeldung. Aber wenn ich die Doku richtig verstanden habe ist eigentlich alles das "gleiche" ?!?!
    Ich bin Umsteiger: Früher VB 4.0 prof, heute VB NET unter Studio 2019 Community Edition (und da noch ein Greenhorn :D )

    mgbig schrieb:

    Der angegebenen Datei ist keine Anwendung zugeordnet
    Klick mal bitte im Explorer auf diese Datei und weise ihr eine Standard-Applikation zu.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Jepp, so gehts auch!

    Also dies hier:

    VB.NET-Quellcode

    1. Dim drucken As String = "C:\projekte\SumatraPDF\SumatraPDF.exe"
    2. Dim pr = New Process
    3. pr.StartInfo.FileName = drucken
    4. pr.StartInfo.Arguments = "-silent -exit-on-print -print-to-default C:\Rechnung.pdf"
    5. pr.Start()


    Das hier:

    VB.NET-Quellcode

    1. pr.StartInfo.Verb = "Print"

    braucht es nicht, da das Drucken bereits in den Argumenten liegt.
    Ich bin Umsteiger: Früher VB 4.0 prof, heute VB NET unter Studio 2019 Community Edition (und da noch ein Greenhorn :D )