PDF auf dem Server erstellt, jetzt aber auf dem Client drucken

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

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von toddel.

    PDF auf dem Server erstellt, jetzt aber auf dem Client drucken

    Hallöchen...

    ich hab da mal wieder was...

    Also ich habe eine aspx-Seite mit zwei Textboxen und einen Button, dessen Funktion eine PDF-Datei mit itextsharp erstellt. Nun möchte ich diese Datei mit dem Standartdialogfenster "Datei drucken" und der Druckerauswahl auf dem Client drucken...

    Ich denke, Javascript ist da die richtige Wahl?

    Quellcode

    1. <form>
    2. <input type="button" value="Print this page" onClick="window.print()">
    3. </form>


    Das öffnet das richtige Fenster, druckt aber natürlich nur das aktive Fenster aus...

    Wie müsste ich vorgehen, wenn ich beim klicken die VB-Funktion zum generieren ausführen, dann drucken und dann die Datei auf dem Server löschen möchte(löschen momentan in der Funktion)?

    Hier mein Code:

    Quellcode

    1. Protected Sub BtnVollmachtdrucken_Click(sender As Object, e As EventArgs) Handles BtnVollmachtdrucken.Click
    2. Dim Filename As String = Left(TBMandant.Text, 5) & "_Vollmacht.pdf"
    3. Dim MyFile As FileStream = New System.IO.FileStream(Server.MapPath("temp\") & Filename, System.IO.FileMode.Create)
    4. Dim pdfTemplate As String = Server.MapPath("vorlagen\Vollmacht.pdf")
    5. Dim pdfReader As New PdfReader(pdfTemplate)
    6. Dim pdfStamper As New PdfStamper(pdfReader, MyFile)
    7. Dim StamperFields As AcroFields = pdfStamper.AcroFields
    8. ' Füllen der Felder in der Vorlage
    9. StamperFields.SetField("Gegen", TBMandant.Text)
    10. StamperFields.SetField("Grund", TBGrund.Text)
    11. StamperFields.SetField("OrtDatum", KanzleiOrt & ", den " & System.DateTime.Now.Date)
    12. StamperFields.SetField("Unterschrift", TBMandant.Text)
    13. ' Dokument abschliessen, damit keine Änderungen mehr gemacht werden können und die Felder nicht mehr angezeigt werden!
    14. pdfStamper.FormFlattening = True
    15. MyFile.Flush()
    16. pdfStamper.Close()
    17. pdfReader.Close()
    18. System.IO.File.Delete(Server.MapPath("temp\") & TBMandant.Text & "_Vollmacht.pdf")
    19. End Sub


    Optimal wäre vor dem Datei löschen natürlich der Ausdruck, also in der Funktion...

    ?( ?( ?( ?(
    Ich habe ein kleines Einzeilenscript in die pdfvorlage eingefügt, welches das Dokument beim öffnen drucken will...

    Mit dem Code:

    Quellcode

    1. Dim pdfPath As String = Server.MapPath("temp\") & Filename
    2. Dim client As New WebClient()
    3. Dim buffer As [Byte]() = client.DownloadData(pdfPath)
    4. Response.ContentType = "application/pdf"
    5. Response.AddHeader("content-length", buffer.Length.ToString())
    6. Response.BinaryWrite(buffer)

    öffnet er mir auch das Dokment und will drucken... Nur soll er das noch im neuen Tab machen, damit ich in der Anwendung bleibe...

    Gleiches Ergebnis mit diesem Zweizeiler:

    Quellcode

    1. Context.Response.ContentType = "application/pdf"
    2. Context.Response.TransmitFile(Server.MapPath("temp\") & Filename)


    Problem bei der Sache ist, dass ich beim IE nicht mehr aus der PDF-Datei mit rückwärts rauskomme. Beim Chrome ginge das. Ist aber unschön und nicht wirklich "usable".

    EIne Alternative wäre, das Dokument ohne Fenster sofort zu drucken. Das kann auch auf dem Server passieren, denn der Drucker ist dort ebenfalls installiert. Wie könnte das gehen? Am Besten auf den Systemstandartdrucker...

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „toddel“ ()