Druckformular
Hallo Forumgemeinde,
ich habe eine Kalkulationssoftware entwickelt welche ich gerne durch eine Druckfunktion erweitern möchte. Nur leider habe ich keine Ahnung wie :D
Also ich habe folgendes schon durch stundenlange suche hinbekommen:
Also Texte einfügen und Bilder klappt soweit. Jedoch hätte ich noch ein paar fragen:
1.) Wie kann ich die Pixel in cm umrechnen? Beziehungsweise die x- und y-koordinaten. Habe mir überlegt die Eigenschaften e.PageBounds.Height und e.PageBounds.Height einfach durch die Längen der A4-Seiten zu rechnen und schon habe ich ein Verhältnis. bin mir aber nicht sicher ob das klappt. Eventuell gibt es ja eine Standardfunktion dafür?!
2.) Kann ich das Druckdokument schon irgendwie bevor ich es zum drucker schicke zusammenbasteln??? das muss ja irgendwie gehen :S denn ich brauche mehr als 1 Seite und hätte auch gerne eine Vorschau...
ich denke da kommen noch Folgefragen. Aber erstmal reicht das :D
Mit freundlichsten Grüßen
ich habe eine Kalkulationssoftware entwickelt welche ich gerne durch eine Druckfunktion erweitern möchte. Nur leider habe ich keine Ahnung wie :D
Also ich habe folgendes schon durch stundenlange suche hinbekommen:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim x = PrintDialog1.ShowDialog()
PrintDocument1.PrinterSettings.PrinterName = PrintDialog1.PrinterSettings.PrinterName
PrintDocument1.Print()
End Sub
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim Kimg As Image
Kimg = Image.FromFile("E:\Projekte\Software\Professionelle Programme\ZRW - Grafik\ZRW\bin\Debug\obj\Kopf.jpg")
Dim PF As Font = New Font("Comic Sans MS", 12, FontStyle.Bold)
e.Graphics.DrawString("Zeile 1:", PF, Brushes.Black, x, 1)
e.Graphics.DrawImage(Kimg, 1, 10)
End Sub
Also Texte einfügen und Bilder klappt soweit. Jedoch hätte ich noch ein paar fragen:
1.) Wie kann ich die Pixel in cm umrechnen? Beziehungsweise die x- und y-koordinaten. Habe mir überlegt die Eigenschaften e.PageBounds.Height und e.PageBounds.Height einfach durch die Längen der A4-Seiten zu rechnen und schon habe ich ein Verhältnis. bin mir aber nicht sicher ob das klappt. Eventuell gibt es ja eine Standardfunktion dafür?!
2.) Kann ich das Druckdokument schon irgendwie bevor ich es zum drucker schicke zusammenbasteln??? das muss ja irgendwie gehen :S denn ich brauche mehr als 1 Seite und hätte auch gerne eine Vorschau...
ich denke da kommen noch Folgefragen. Aber erstmal reicht das :D
Mit freundlichsten Grüßen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 164443
Url: https://administrator.de/contentid/164443
Ausgedruckt am: 16.11.2024 um 21:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo,
mit dem lieben Drucken kann man Tage zubringen ehe alles richtig klappt und dann wenn man denkt es funktioniert alles...fragt jemand geht das auch auf einem anderen Drucker und man stellt fest das alles wieder ganz anders aussieht.
Korrigiert mich also bitte falls ich mit folgendem falsch liege...
1. Am einfachsten geht so etwas mit dem Taschenrechner. Din A4 Seite: Breite 21 cm Höhe 29,7 cm.
Das rechnen wir jetzt mal in zoll um:
1 Zoll = 2,54cm im Englischen Inch
Din A4: Breite 21/ 2,54 = 8,267716535433071" (Zoll)
Din A4: Höhe = 29,7/2,54 = 11,69291338582677" (Zoll)
jetzt brauchst Du noch die Auflösung deines Bildes. Je höher die auflösung desto schärfer kannst Du zeichnen.
Das Stichwort ist hier ppi: PixelPerInch
Beispielsweise eine Auflösung von 200 ppi.
Breite 8,267716535433071" * 200 = 1654px (aufgerundet)
Höhe: 11,69291338582677" * 200 = 2339px (aufgerundet)
Nun zum Quelltext:
Dim kk As New Bitmap(1654, 2339)
kk.SetResolution(200, 200)
So und nun zum Kern der 1. Frage: weil ich ja meine Auflösung festgelegt habe kann ich genauso rückrechnen (2,54 cm / 200 ppi) * [Deiner Pixelzahl] = cm Position auf dem DinA4 Blatt
Zur 2. Frage: mit dem Teil aus 1. und den PrintPreview Controls sollte sich soetwas basteln lassen.
MfG
Okeanos85
mit dem lieben Drucken kann man Tage zubringen ehe alles richtig klappt und dann wenn man denkt es funktioniert alles...fragt jemand geht das auch auf einem anderen Drucker und man stellt fest das alles wieder ganz anders aussieht.
Korrigiert mich also bitte falls ich mit folgendem falsch liege...
1. Am einfachsten geht so etwas mit dem Taschenrechner. Din A4 Seite: Breite 21 cm Höhe 29,7 cm.
Das rechnen wir jetzt mal in zoll um:
1 Zoll = 2,54cm im Englischen Inch
Din A4: Breite 21/ 2,54 = 8,267716535433071" (Zoll)
Din A4: Höhe = 29,7/2,54 = 11,69291338582677" (Zoll)
jetzt brauchst Du noch die Auflösung deines Bildes. Je höher die auflösung desto schärfer kannst Du zeichnen.
Das Stichwort ist hier ppi: PixelPerInch
Beispielsweise eine Auflösung von 200 ppi.
Breite 8,267716535433071" * 200 = 1654px (aufgerundet)
Höhe: 11,69291338582677" * 200 = 2339px (aufgerundet)
Nun zum Quelltext:
Dim kk As New Bitmap(1654, 2339)
kk.SetResolution(200, 200)
So und nun zum Kern der 1. Frage: weil ich ja meine Auflösung festgelegt habe kann ich genauso rückrechnen (2,54 cm / 200 ppi) * [Deiner Pixelzahl] = cm Position auf dem DinA4 Blatt
Zur 2. Frage: mit dem Teil aus 1. und den PrintPreview Controls sollte sich soetwas basteln lassen.
MfG
Okeanos85
Hallo,
also man kann auch mit printDocument mehrseitig drucken. der Trick dabei ist: e.HasMorePages=True in der printPage Routine. Dies löst immer wieder das das printPage Ereigniss aus solange bis Du e.HasMorePages=False setzt. Was den Inhalt der Seiten betrifft, den musst Du für jede Seite generieren lassen. Dann würde auch ein PDF herauskommen und nicht 10.
PDF ist wieder so eine Sache. Um PDF zu drucken würde ich Dir [pdfsharp.com diesen Link] zu PDF Sharp mal geben wolen. Ich habe bisher immer einen Bogen darum gemacht mit PDF's zu Drucken, aber Naja musste mal probieren.
HTML zum Drucker bestimmt auch möglich über die Web Browser Komponente in VB. Hast Du schon einmal über eine Drittanbieter Komponente nachgedacht? List & Label 16 ist Da ein wirklich gutes Programm, wenn auch nicht gerade umsonst.
So nun noch ein paar Links die sich damit beschäftigen:
1
2
3
Ich hoffe Du wirst fündig... falls weitere Fragen aufkommen, nur her damit.
MfG
Okeanos85
also man kann auch mit printDocument mehrseitig drucken. der Trick dabei ist: e.HasMorePages=True in der printPage Routine. Dies löst immer wieder das das printPage Ereigniss aus solange bis Du e.HasMorePages=False setzt. Was den Inhalt der Seiten betrifft, den musst Du für jede Seite generieren lassen. Dann würde auch ein PDF herauskommen und nicht 10.
PDF ist wieder so eine Sache. Um PDF zu drucken würde ich Dir [pdfsharp.com diesen Link] zu PDF Sharp mal geben wolen. Ich habe bisher immer einen Bogen darum gemacht mit PDF's zu Drucken, aber Naja musste mal probieren.
HTML zum Drucker bestimmt auch möglich über die Web Browser Komponente in VB. Hast Du schon einmal über eine Drittanbieter Komponente nachgedacht? List & Label 16 ist Da ein wirklich gutes Programm, wenn auch nicht gerade umsonst.
So nun noch ein paar Links die sich damit beschäftigen:
1
2
3
Ich hoffe Du wirst fündig... falls weitere Fragen aufkommen, nur her damit.
MfG
Okeanos85