Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Druckformular

Frage Entwicklung VB for Applications

Mitglied: erik87

erik87 (Level 1) - Jetzt verbinden

12.04.2011 um 17:33 Uhr, 5650 Aufrufe, 5 Kommentare

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:


01.
  
02.
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 
03.
        Dim x = PrintDialog1.ShowDialog() 
04.
        PrintDocument1.PrinterSettings.PrinterName = PrintDialog1.PrinterSettings.PrinterName 
05.
        PrintDocument1.Print() 
06.
    End Sub 
07.
     
08.
   Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage 
09.
        Dim Kimg As Image 
10.
        Kimg = Image.FromFile("E:\Projekte\Software\Professionelle Programme\ZRW - Grafik\ZRW\bin\Debug\obj\Kopf.jpg") 
11.
        Dim PF As Font = New Font("Comic Sans MS", 12, FontStyle.Bold) 
12.
        e.Graphics.DrawString("Zeile 1:", PF, Brushes.Black, x, 1) 
13.
        e.Graphics.DrawImage(Kimg, 1, 10) 
14.
    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
Mitglied: Okeanos85
13.04.2011 um 10:25 Uhr
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
Bitte warten ..
Mitglied: erik87
13.04.2011 um 19:12 Uhr
Hallo,

Ok, soweit habe ich das verstanden. Aber wie gehe ich nun genau vor? Mir fehlt so ein wenig das Kochrezept.

Ich arbeite mit VB 2008. Dort ist es möglich ein Objekt namens PrintDocument in der Form einzufügen. Wenn ich mich nicht irre, glaube ich das dieses nur einer Seite umfasst??? (Jedenfalls habe ich keine Eigenschaft gefunden, bei der ich eine Seitenzahl einstellen kann.) Diese eine Seite wird immer nur nach dem Aufruf PrintDocument1.print gedruckt. Also müsste ich mir eine globale Variable einrichten die mir die Seitenzahlen durch läuft und dann im PrintPage-handler die entsprechende Seite zur Laufzeit erstellen?

Das macht in meinen Augen kein Sinn. Wenn ich nun 10 Seiten zu pdf drucken möchte habe ich ja 10 pdf-dokumente anstelle von einem. -.-

Da die Seiten vom Grundaufbau immer gleich sind und ich einfach nur die Tabellen füllen und dann drucken möchte habe ich schon überlegt einfach eine HTML zur Laufzeit zu Erstellen und die dann zu drucken. Wäre das Sinnvoller/einfacher???

Wenn ja, worauf muss ich achten und wie schicke ich diese HTML dann zum drucker? Kann ich dem Printdocument die Html in etwa so: Printdocument = HTML zuweisen??

Kennst du eventuell einen Link zu einer Anleitung, welche sich mit dieser Problematik beschäfftigt? Meine Bücher geben da leider nichts her...


Mit freundlichen Grüßen
Bitte warten ..
Mitglied: Okeanos85
14.04.2011 um 09:11 Uhr
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
Bitte warten ..
Mitglied: erik87
14.04.2011 um 21:22 Uhr
Hallo,

danke, danke danke!!!! Das ist denke ich alles was ich wissen muss. Den Rest bekomme ich selber hin. ( denke ich xD )


Ohne deine Links gesichtet zu haben möchte ich dich noch darauf hinweisen das ich keine PDF´s erstellen möchte. Ich habe nur nen PDF-Druckertreiber installiert. Diesen steuer ich ja genauso wie den Drucker an xD.

So, jetzt muss ich die Bilder/Vorlagen programmieren


Mfg.
Bitte warten ..
Mitglied: Okeanos85
15.04.2011 um 08:15 Uhr
Hallo,

Na dann Wünsche ich noch viel Erfolg. Und bei weiteren Fragen ruhig schreiben...

MfG

Okeanos85
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
Suche passender Treiber (12)

Frage von stolli zum Thema Windows Server ...

Peripheriegeräte
Wlan stört Funkmaus (11)

Frage von Falaffel zum Thema Peripheriegeräte ...

Peripheriegeräte
gelöst USB Festplatte verliert Laufwerksbuchstabe (9)

Frage von cese4321 zum Thema Peripheriegeräte ...