Drucken auf "Micrososft Print to PDF"

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

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

    Drucken auf "Micrososft Print to PDF"

    Hallo,

    ich habe mir schon den "Wolf gegoogelt" aber noch nicht die Lösung gefunden. Ich nutze die folgende Funktion um ein Dokument "silent" auf den Windows Standard drucker zu schicken. Das funktioniert auch:

    VB.NET-Quellcode

    1. Private Sub Print_pdf(Input_pth As String)
    2. Process.Start(New ProcessStartInfo(Input_pth,
    3. $"""{PrintDialog1.PrinterSettings.PrinterName}""") With {.Verb = "printto",
    4. .UseShellExecute = True,
    5. .WindowStyle = ProcessWindowStyle.Normal})
    6. Dim pr = Process.GetProcessesByName("AcroRd32")
    7. Dim instance As Process
    8. For Each instance In pr
    9. instance.CloseMainWindow()
    10. instance.Close()
    11. Next
    12. End Sub


    Nun möchte ich aber unabhängig vom eingestellten Drucker "Microsoft Print to PDF" verwenden und gleichzeitig auch den Ziel-Dateinamen mitgeben, ohne dass ein Pop-Up danach fragt.

    Geht das?

    Danke Euch

    Christian
    Wenn Du mit einem selbsterstellten PrintDocument arbeitest, dann

    Druckernamen festlegen, zur Sicherheit Drucker(namen) auf Korrektheit/Anwesenheit prüfen, Direktausgabe in Datei aktivieren, Dateinamen festlegen, los geht's

    VB.NET-Quellcode

    1. PrintDocument1.PrinterSettings.PrinterName = "Microsoft Print To PDF"
    2. If Not PrintDocument1.PrinterSettings.IsValid Then Return
    3. PrintDocument1.PrinterSettings.PrintToFile = True
    4. PrintDocument1.PrinterSettings.PrintFileName = Zielpfad
    5. PrintDocument1.Print()


    Ach Moment, Du willst Du ne externe Datei drucken? Hm …
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @Hoepker Lies den eingestellten Drucker aus, stell ihn um auf "Microsoft Print To PDF", drucke Deine Datei, stell den ursprünglichen Drucker wieder her.
    Feddich.
    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!
    Hallo,

    ja auch wenn das jetzt bescheuter klingt ich will ein fertiges PDF in ein neues PDF drucken. Nicht lachen!

    Hintergrund:
    • Ich habe einen Word Brief, den ich nach PDF konvertiere.
    • Ich merge den WORD Brief mit gescannten Dokumenten als attachement
    • Dieses gemergte Dokument wird als Brief an einen Druckprovider geschickt, damit er druckt und den Brief mit attachement versendet.

    Klappt alles prima - aber:
    • Manche gescannten attachements haben eine wesentlich größere Auflösung oder was auch immer
    • Wenn die Dokumnte gemergt sind ist die erste Seite ein normaler DinA4 brief, aber die nachfolgenden wesentlich größer im PDF
    • Wenn der Provider dann druckt, werden die attachements angeschnitten

    Erstaunlicherweise, wenn ich dieses PDF mit den übergroßen Folgeseiten erneut mit Microsoft Print To PDF drucke, kann ich mit der Funktion "Shrink Oversized Pages" des Druckertreibers alle Seiten auf das gleiche Format bekommen.

    Also entweder finde ich eine Möglichkeit beim Mergen, oder ich muss das finale Dokument erneut als PDF drucken.

    Oder bin ich hier vielleicht zu blöde?


    @RodFromGermany
    "Lies den eingestellten Drucker aus, stell ihn um auf "Microsoft Print To PDF", drucke Deine Datei, stell den ursprünglichen Drucker wieder her.Feddich."

    Das vestehe ich, aber ich müsste dennoch den output filenamen irgendwie mitgeben. Da hae ich keine Ahnung. Hast Du ein Code Beispiel für mich ?


    Christian

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Hoepker“ ()

    Hoepker schrieb:

    Hast Du ein Code Beispiel für mich ?
    Schau mal hier rein:
    docs.microsoft.com/de-de/dotne…w=netframeworkdesktop-4.8
    und statt printDocument1.Print() rufst Du Deinen Code aus Post #1 auf (nicht getestet).
    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!