2012-12-18 7 views
6

Ein kleiner Hintergrund: Erstellen eines Programms, das Berichte und Formulare aus Datenbankeingaben generiert. Ich habe alles in Ordnung, aber ich kann mein Problem mit dem Drucken nicht erkennen. Ich habe verschiedene Methoden zum Drucken auf einem Drucker ausprobiert, und jedes Dokument, das ich aus meinem benutzerdefinierten Programm drucke, befindet sich etwas außermittig auf der rechten Seite der Seite.Was ist die bevorzugte Methode zum Drucken auf einen Drucker in VB.NET?

Ich verstehe den Grund dafür ist der Drucker selbst, aber wie kann ich dies berücksichtigen? In der Druckvorschau sieht der Bericht perfekt aus. Ich brauche eine Anleitung, welche Methoden über mehrere, verschiedene Drucker in VB.NET funktionieren. Jede Hilfe wird sehr geschätzt.

Antwort

1

Anstatt e.pagebounds für die Bounding Box zu verwenden, versuchen Sie es mit e.graphics.VisibleClipBounds. Einige Druckertreiber sind mit den e.pageBounds ein wenig unzuverlässig, und die sichtbaren Clipbounds scheinen genauer zu sein.

Zum Beispiel:

Sub printPage(ByVal sender As Object, ByVal e As PrintPageEventArgs) 
Dim g As Graphics 
g = e.Graphics 
g.ResetTransform() 

g.VisibleClipBounds ist nun ein Rechteck, das die maximale Seitengröße sein sollte, und kann zum Zentrieren von Text oder Grafiken verwendet werden. Verwenden Sie einfach g als Grafikobjekt für die Ausgabe an den Drucker. Die horizontale Mitte der Seite ist

g.VisibleClipBounds.Left + g.VisibleClipBounds.Width/2 
+0

Konnten Sie ein Beispiel von diesem in der Aktion bekannt geben. Ich habe das versucht und konnte das nicht korrekt umsetzen. – FailHorse

+0

Ich habe die Antwort bearbeitet, um dies hinzuzufügen. – xpda

Verwandte Themen