PrintDocument:Preview zeigt die Seite richtig an,aber beim Ausdrucken wird sie abgeschnitten



  • Ich habe eine Klasse die von PrintDocument abgeleitet ist.In der ich OnPagePrint überschreibe um meine Daten auszudrucken.In PrintPreviewControl wird das Document richtig angezeigt aber wenn ich es ausdrucke wird die Ausgabe ins untere Drittel der Seite verschoben.Hier ist mein Code:

    protected override void OnPrintPage(PrintPageEventArgs e)
            {
    
                bounds = e.MarginBounds;
                g = e.Graphics;
                 Font f = new Font("Time New Roman", 12);
                lable_width = g.MeasureString("Betreuender Vertriebler: ", f).Width;
                Font titel_font = new Font(f, FontStyle.Bold|FontStyle.Underline);
                StringFormat titel_format = new StringFormat();
                titel_format.Alignment = StringAlignment.Center;
                current_font = titel_font;
                e.Graphics.DrawString("ID-Verlängerung", titel_font, Brushes.Black, GetCurrentLine(), titel_format);
                NextLine();
                c_height += 10;
                current_font = f;
                DrawLine("Datum", DateTime.Now, "dd.mm.yy HH:mm");
                DrawLine("Betreuender Vertriebler", Vetriebler);
                DrawLine("Firma", Firma);
                DrawLine("Anspechpartner", Ansprechpartner);
                DrawLine("Laufzeit",string.Format("{0:dd.MM.yy HH:mm} bis {0:dd.mm.yy HH:mm}",Laufzeit_von,Laufzeit_bis));
                DrawLine("Grund", Grund);                      
                DrawIDs();
                c_height += 20;
                DrawUnterschrift("Vertrieb", 1);
                DrawUnterschrift("Technik", 2);
                e.HasMorePages = false;
                base.OnPrintPage(e);
            }
    
       Rectangle GetCurrentLine()
            {
                Rectangle rec = new Rectangle();
                rec.Width = bounds.Width;
                rec.Height = (int) Math.Ceiling( current_font.GetHeight(g));
                rec.X = bounds.X;
                rec.Y = bounds.Y + (int)Math.Ceiling(c_height);
                return rec;
    
            }
    




  • Sehr freundlich einfach auf die Seite zu verlinken und noch nicht mal sagen was genau dein Problem mit meinen Post ist.



  • Ich weiss nicht ob er das gemeint hat, aber du solltest eine Frage stellen.
    Es sollte zwar jedem Klar sein welche Frage du hier implizierst, aber es ist dennoch höflicher sie auszuformulieren.

    Weiters ist dein Beispiel nicht vollständig, es fehlen da haufenweise Funktionen. Das ist auch nicht sehr höflich - einfach ein paar Zeilen Code hinknallen, und zu erwarten dass wir hier fleissig raten. Pf.

    Davon abgesehen:
    Hast du vielleicht vergessen in OnBeginPrint die Koordinaten zurückzusetzen?



  • Andorxor schrieb:

    Sehr freundlich einfach auf die Seite zu verlinken und noch nicht mal sagen was genau dein Problem mit meinen Post ist.

    Wenn Du liest was im verlinkten Post steht und dann vllt. noch dem Link in diesem Thread folgst solltest Du von selbst erkennen was fehlen könnte.


Anmelden zum Antworten