Laden...

Scrollbares Panel als PDF speichern

Erstellt von Cr0$$Coder vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.415 Views
C
Cr0$$Coder Themenstarter:in
2 Beiträge seit 2019
vor 5 Jahren
Scrollbares Panel als PDF speichern

Hallo zusammen,
ich möchte ein scrollbares Panel, in dem mehrere Controls sind, als PDF speichern, um die Seite dann auszudrucken.
Leider wird nur der sichtbare Teil des Panels in die PDF gezeichnet.


        private void button1_click(object sender, EventArgs e) {

            System.Drawing.Printing.PrintDocument doc = new System.Drawing.Printing.PrintDocument();
            doc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(doc_PrintPage);
            doc.Print();
}


        private void doc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            Panel grd = TP_Panel;
            
            Bitmap bmp = new Bitmap(grd.Width, grd.Height, grd.CreateGraphics());
            grd.DrawToBitmap(bmp, new Rectangle(grd.Location.X, grd.Location.Y, grd.Width, grd.Height));
            RectangleF bounds = e.PageSettings.PrintableArea;
            float factor = ((float)bmp.Height / (float)bmp.Width);
            e.Graphics.DrawImage(bmp, bounds.Left, bounds.Top, bounds.Width, factor * bounds.Width);
        }


Das Ergebnis sieht dann wie im Anhang aus..

Wäre dankbar, wenn mir jemand helfen könnte das ganze Panel als PDF zu speichern.
MfG Cr0$$Coder

Grüße, Cr0$$Coder

16.807 Beiträge seit 2008
vor 5 Jahren

Dein Code deckt auch nur ab, dass das aktuell gezeichnete Panel gedruckt wird - und das ist eben nur der sichtbare Teil.
So wie der Code ist vermute ich, dass Du ihn von Stack Overflow oder CodeProject hast 😉

Der bessere Weg - eigentlich willst Du ja eine tabellarische Darstellung von Inhalten haben - wäre eigentlich ein Reporting Tool, das nicht von der UI abhängig ist.
Eines der am meisten dafür verwendeten Komponenten ist List and Label.

Du kannst das natürlich auch alles selbst machen; aber dann halt nicht über den Weg des aktuellen Inhalts eines Panels; sondern durch eigenes Zeichnen in eine Bitmap.

C
Cr0$$Coder Themenstarter:in
2 Beiträge seit 2019
vor 5 Jahren

Danke für deine Antwort. Was eignet sich dafür am besten? Hab hier auf die schnelle PDFsharp gefunden.

Grüße, Cr0$$Coder