Document drucken mit printDocument1


m_bo

Grünschnabel
Hallo,

habe ein problem und komm nichtmehr weiter.

Habe ein program geschrieben mit dem man Geräte prüfen kann funktioniert einwandfrei,
nun möchte ich dem nutzer gern die möglichkeit geben das Prüfprotokoll auzudrucken.

hab im internet schon rumgesucht und raus gefunden wie man druckt aber ich kann das Dokument nicht richtig aufbauen es sollte dann fogendermaßen aussehen.

Prüfprotokoll
Gerätename: ...... ID-nummer:.......
Benutzer:.......
Ergebnis der Prüfung:...........
Prüfer:........
Unterschrift:...........


wie ich eine zeile einfüge habe ich schon rausgefunden

Code:
e.Graphics.DrawString(strText1, New Font("times new roman", 12),_
New SolidBrush(Color.Black),_
e.MarginBounds.left, e.MarginBounds.Top)
wie bekomm ich denn jetzt die zweite zeile hin?

hoffe mir kann da jemand helfen

mfg m_bo
 

Shakie

Erfahrenes Mitglied
Du musst als Y-Koordinate natürlich nicht MarginBounds.Top sondern MarginBounds.Top+Höhe_Einer_Zeile angeben.
Du kannst aber auch einfach im strText1 die Zeilenumbrüche einfügen, zum Beispiel so:
Code:
strText1 = "Erste Zeile" & System.Environment.NewLine & "Zweite Zeile"
 

m_bo

Grünschnabel
Danke erstmal für die schnelle antwort

Na hab das jetzt folgendermaßen gelöst:

Code:
'schrift und farbe
                Dim drawFontGros As New Font("Arial", 18, FontStyle.Bold)
                Dim drawFont As New Font("Arial", 14)
                Dim drawBrush As New SolidBrush(Color.Black)
                
                'X position des rechecks
                Dim x As Single = 50.0F

                'größ des Rechtecks
                Dim width As Single = 725.0F
                Dim height As Single = 25.0F

                Dim zeile1 As New RectangleF(x, 150.0F, width, height)
                Dim zeile2 As New RectangleF(x, 200.0F, width, height)
                Dim zeile3 As New RectangleF(x, 225.0F, width, height)
                Dim zeile4 As New RectangleF(x, 250.0F, width, height)
                Dim zeile5 As New RectangleF(x, 275.0F, width, height)
                Dim zeile6 As New RectangleF(x, 300.0F, width, height)
                Dim zeile7 As New RectangleF(x, 325.0F, width, height)
                Dim zeile8 As New RectangleF(x, 350.0F, width, height)

                'Format
                Dim DrawFormatGros As New StringFormat
                DrawFormatGros.Alignment = StringAlignment.Center

                Dim drawFormat As New StringFormat
                drawFormat.Alignment = StringAlignment.Near
               
                'Zeile 2
                e.Graphics.DrawString("Prüfprotokoll", drawFont,_
                drawBrush, zeile2,  drawFormat)

                'Zeile 3
                e.Graphics.DrawString("Gerät: ", drawFont,_
                drawBrush, zeile3, drawFormat)
weiß nicht ob das die Schönste lösung ist aber es geht.
Fals noch jemand eine bessere idee hat kann er sie ja mal posten.

ein problem hab ich dann aber noch: wie kann ich denn ne Grafik in die erste zeile einfügen? hab mei msdn was gefunden aber da bekomm ich irgendwie kein bild raus.



mfg m_bo
 

Shakie

Erfahrenes Mitglied
Ich glaube zum Zeichnen von Bildern gibt es Graphics.DrawImage oder DrawPicture oder was Ähnliches.
Wieso kommt bei dir irgendwie kein Bild raus? Ein paar Details zum Problem wären hilfreich.
 

m_bo

Grünschnabel
hallo,
hab das problem gelöst.

hab nochmal nen bischen rumgesucht und das dann so gelöst

Code:
'Logo in die obere linke ecke des Protokolls einfügen
             ' das logo muss im debug ordner liegen
                Dim logo As Image = Image.FromFile("logo.jpg")

             'obere linke ecke des bildes definieren
                Dim ulCorner As New Point(560, 40)

             'Logon einfügen
                e.Graphics.DrawImage(logo, ulCorner)
das geht wunderbar.
danke aber trotzdem für die hilfen.

mfg m_bo_27