Печать строк с данными больше проблемы страницы - PullRequest
0 голосов
/ 26 марта 2019

Мне нужно напечатать свои строки с данными. Я использую документ для печати, но не могу напечатать на новую страницу. Например, у меня есть 1000 строк в datatable. Если он умещается в 25 строк на странице, появится 40 страниц.Я вижу одну страницу на моем экране.Мои коды здесь.

int offsetY = 15;
int startY = 20;
int RowIndex = 0;
int RowCount;

 RowCount = RAPORDT.Rows.Count;

        PrintDocument pd = new PrintDocument();
        pd.OriginAtMargins = true;
        pd.DefaultPageSettings.Landscape = true;
        Margins margins = new Margins(20, 20, 20, 20);
        pd.DefaultPageSettings.Margins = margins;
        pd.PrintPage += new PrintPageEventHandler(this.pdNormal_PrintPage);

        PrintDialog printdlg = new PrintDialog();
        PrintPreviewDialog printPrvDlg = new PrintPreviewDialog();
        printPrvDlg.Document = pd;
        printPrvDlg.ShowDialog();
        printdlg.Document = pd;

private void pdNormal_PrintPage(object sender, PrintPageEventArgs e)
    {
        float pageWidth = e.PageSettings.PrintableArea.Width;
        float pageHeight = e.PageSettings.PrintableArea.Height;
        Font printFontNoBoldVerdanaSatir = new Font("Verdana", 7f);
        Font printFontBoldVerdana = new Font("Verdana", 7f, FontStyle.Bold);
        e.Graphics.DrawString("TARİH", printFontBoldVerdana, Brushes.Black, 10, 20, new StringFormat());
        e.Graphics.DrawString("ÜRÜN", printFontBoldVerdana, Brushes.Black, 80, 20, new StringFormat());
        e.Graphics.DrawString("CARİ", printFontBoldVerdana, Brushes.Black, 400, 20, new StringFormat());
        float fontHeight = printFontNoBoldVerdanaSatir.GetHeight();
        while (RowIndex < RowCount - 1)
        {
            e.HasMorePages = offsetY >= (pageHeight - 50);
            if (e.HasMorePages == true)
            {
                offsetY = 15;
                startY = 20;

            }
         e.Graphics.DrawString(Convert.ToDateTime(RAPORDT.Rows[RowIndex]["TARIH"].ToString()).ToString("dd.MM.yyyy"), printFontNoBoldVerdanaSatir, Brushes.Black, 10, startY + offsetY, new StringFormat());
            e.Graphics.DrawString(RAPORDT.Rows[RowIndex]["STOKADI"].ToString(), printFontNoBoldVerdanaSatir, Brushes.Black, 80, startY + offsetY, new StringFormat());
            e.Graphics.DrawString(RAPORDT.Rows[RowIndex]["CARIUNVAN"].ToString(), printFontNoBoldVerdanaSatir, Brushes.Black, 400, startY + offsetY, new StringFormat());

            RowIndex++;
            offsetY += (int)fontHeight;
        }
    }
...