PrintPrieview Speichern

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von SystemUnknow.

    PrintPrieview Speichern

    Hi,

    ich erstelle ein Printdocument und lasse es mit PrintPreview anzeigen. klappt gut.

    VB.NET-Quellcode

    1. Private Sub Pri_Doc_Universal_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles Akut_Gesund_Blanko_Brief.PrintPage
    2. ' Größe und Position des Preview
    3. PrintPreviewDialog1.Width = CInt(e.Graphics.VisibleClipBounds.Width) - 50 '1200
    4. PrintPreviewDialog1.Height = CInt(e.Graphics.VisibleClipBounds.Height) - 250 '900
    5. ' Die Graphik
    6. Dim G As Graphics = e.Graphics
    7. ' Rechteck (Druckbare Bereich) zeichnen
    8. G.DrawRectangle(Pens.Blue, Rectangle.Truncate(e.Graphics.VisibleClipBounds))
    9. PrintPreviewDialog1.SetDesktopLocation(300, 0)
    10. ' Und so wieter


    kann ich das G nun als Graphic Datei, z.B. "C:\...\MeinBild.PNG", abspeichern ?
    Habe einiges gefunden über Image speichern. hilft "mir" aber nicht.


    lieben dank

    bernd

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

    ne ne,

    die Routine von SystemUnknow funktioniert tadellos. ist aber für mein Vorhaben viel zu aufwendig, da da ganze Dokument nochmals
    zusammen gestellt werden muss.


    Ich frage mal anders:
    gibt es eine möglichkeit, G in ein Image zu kopieren ?

    VB.NET-Quellcode

    1. ' Die GraphikDim G As Graphics = e.GraphicsDim Img As Image = G




    also eigentlich nur eine Kopie in Img rein.

    Das würde mir schon reichen.

    lieben dank
    Bernd
    warum aufwändig, du brauchst nur diesen teil:

    Private Sub xxx(ByVal sender As Object, _
    52 ByVal e As System.Drawing.Printing.PrintEventArgs)
    53
    54 Dim ppi() As Printing.PreviewPageInfo = ppc.GetPreviewPageInfo()
    55 For x As Integer = 0 To ppi.Length - 1
    56 ppi(x).Image.Save("c:\look" & x.ToString & ".jpg")
    57 Next
    58
    59 End Sub

    du muß nicht die komplette code aud dem Link übernemen und noch ein mal alles neu schreiben/zeichnen.
    Kannst an deine vorhandene Code anpassen.

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

    du hast Code:

    VB.NET-Quellcode

    1. Dim G As Graphics = e.Graphics
    2. ' Rechteck (Druckbare Bereich) zeichnen
    3. G.DrawRectangle(Pens.Blue, Rectangle.Truncate(e.Graphics.VisibleClipBounds))
    4. PrintPreviewDialog1.SetDesktopLocation(300, 0)


    Diese Variable "G" deklarierst du "Global", zeichnest du dein Dokument, dann:

    VB.NET-Quellcode

    1. e.Graphics = G

    In Objekt Variable G wird dein Druckvorschau gezeichnet und mit speichern routine die ich gepostet habe, kannst inhalt deine Objekt Variable G speichern.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SystemUnknow“ ()

    Na, das ist doch schöner erklärt.
    Sitze aber trotzdem auf der Leitung.

    ich habe jetzt die Variable Global Deklariert.
    In meinem Document weise ich e.Graphics dann zu.
    Das Preview wird weiterhin angezeigt.

    und wie bekomme ich das G jetzt (gespeichert) in die Routine rein ?

    sorry ich verstehe das G überhaupt nicht.
    G ist eine Graphics. Image ist ein Bitmap.......
    Ich brauche doch nur das G an ein Image übergeben. mehr brauche ich dich nicht !
    aus dem Link:

    VB.NET-Quellcode

    1. 08 Private Sub Button1_Click(ByVal sender As System.Object, _
    2. 09 ByVal e As System.EventArgs) Handles Button1.Click
    3. 10
    4. 11 pdoc.PrintController = ppc
    5. 12
    6. 13 AddHandler pdoc.PrintPage, AddressOf pdoc_PrintPage
    7. 14 AddHandler pdoc.EndPrint, AddressOf xxx
    8. 15
    9. 16 ' This shows nothing on the screen. It ends
    10. 17 ' up calling the 'xxx' sub which saves the
    11. 18 ' printpage images to files
    12. 19 pdoc.Print()
    13. 20
    14. 21 ' This will show a regular print preview
    15. 22 pdoc.PrintController = New Printing.StandardPrintController
    16. 23 Dim ppd As New PrintPreviewDialog
    17. 24 ppd.Document = pdoc
    18. 25 ppd.ShowDialog()
    19. 26
    20. 27 End Sub
    OK,
    ich vermut ich erkläre nicht gut genug.
    Ich versuche es anders.
    Natürlich druck die Routine die du mir oben gezeigt hast das Dokument !

    VB.NET-Quellcode

    1. AddHandler pdoc.PrintPage, AddressOf pdoc_PrintPage


    Habe ich ja verstanden.

    Ich habe versucht mit der Routine mein Dokument zu speichern.

    VB.NET-Quellcode

    1. AddHandler pdoc.PrintPage, AddressOf Akut_Gesund_Blanko_Brief

    also mein Dokument.
    dann kommt folgende Fehlermeldung


    Die Signatur der Friend WithEvents Akut_Gesund_Blanko_Brief As System.Drawing.Printing.PrintDocument-Methode ist mit dem Delegaten "Delegate Sub PrintPageEventHandler(sender As Object, e As System.Drawing.Printing.PrintPageEventArgs)" nicht kompatibel.


    Wiso wird denn mein Dokument nicht angenommen ?
    warum ?:

    VB.NET-Quellcode

    1. AddHandler pdoc.PrintPage,.......

    schau die Source genauer an.
    Du willst jetzt nicht drucken sondern speichern:

    VB.NET-Quellcode

    1. AddHandler pdoc.EndPrint, AddressOf xxx
    2. 15
    3. 16 ' This shows nothing on the screen. It ends
    4. 17 ' up calling the 'xxx' sub which saves the
    5. 18 ' printpage images to files
    6. 19 pdoc.Print()
    7. 20
    8. 21 ' This will show a regular print preview
    9. 22 pdoc.PrintController = New Printing.StandardPrintController
    10. 23 Dim ppd As New PrintPreviewDialog
    11. 24 ppd.Document = pdoc
    12. 25 ppd.ShowDialog()

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SystemUnknow“ ()