drvfn Ответов: 2

Добавить номер страницы и порядок столбцов в различных страниц на itextshap формате PDF


Привет всем

Я пытаюсь узнать о itextsharp, у меня есть следующий код для создания PDF-файла из моей datagrid, и он работает, но мне нужно добавить к нему два новостных улучшения, и я не знаю, как это сделать,

во-первых, нужно добавить номер страницы в PDF-файле перед его créate,
во-вторых, сгруппировать элементы по одному столбцу и, когда элемент отличается, показать эту строку/строки на новой странице, что-то вроде группы строк по столбцам на разных страницах.

Кто-нибудь может помочь мне с этим? заранее спасибо.

private void button2_Click(object sender, EventArgs e)
        {
            exportgridtopdf(dataGridView1, "test");
        }
        public void exportgridtopdf(DataGridView dataGridView1, string filename)
        {
            BaseFont bf = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1250, BaseFont.EMBEDDED);
            PdfPTable pdftable = new PdfPTable(dataGridView1.Columns.Count);
            pdftable.HeaderRows = dataGridView1.Columns.Count;       
            pdftable.DefaultCell.Padding = 3;
            pdftable.WidthPercentage = 100;
            pdftable.HorizontalAlignment = Element.ALIGN_LEFT;
            pdftable.DefaultCell.BorderWidth = 1;            
            iTextSharp.text.Font text = new iTextSharp.text.Font(bf, 10, iTextSharp.text.Font.NORMAL);
            //add header
            foreach (DataGridViewColumn column in dataGridView1.Columns)
            {
                PdfPCell cell = new PdfPCell(new Phrase(column.HeaderText,text));
                cell.BackgroundColor = new iTextSharp.text.BaseColor(240, 240, 240);
                pdftable.AddCell(cell);
            }
            //add datarow
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                foreach (DataGridViewCell cell in row.Cells)
                {                    
                    pdftable.AddCell(new Phrase(cell.Value.ToString(), text));
                }
            }
            var savefiledialoge = new SaveFileDialog();
            savefiledialoge.FileName = filename;
            savefiledialoge.DefaultExt = ".pdf";            
            if (savefiledialoge.ShowDialog()==DialogResult.OK)
            {
                using (FileStream stream = new FileStream(savefiledialoge.FileName, FileMode.Create))
                {
                    try
                    {
                        PdfWriter writer = PdfWriter.GetInstance(pdfdoc, stream);
                        pdfdoc.SetPageSize(PageSize.A4.Rotate()); // horizontal
                        pdfdoc.Open();
                        Ehead();           
                        pdfdoc.Add(pdftable);
                        pdfdoc.Close();
                        stream.Close();                        
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, "error occured ", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }

                    MessageBox.Show("Downloaded","", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }
        private void Ehead()
        {
            var parrafo = new Paragraph("WHAREHOUSES");
            parrafo.SpacingBefore = 20;
            parrafo.SpacingAfter = 0;
            parrafo.Alignment = 1; //0-Left, 1 middle,2 Right
            pdfdoc.Add(parrafo);

            var parrafo3 = new Paragraph("ORDERS"  Date:" + DateTime.UtcNow);
            parrafo3.SpacingBefore = 1;
            parrafo3.SpacingAfter = 8;
            parrafo3.Alignment = 1; //0-Left, 1 middle,2 Right
            pdfdoc.Add(parrafo3);
        }


Что я уже пробовал:

я провожу некоторое время с
PageEventHelper
, colspan, rowspan ... но я не нахожу решения...

drvfn

я не могу найти решение , кто-то может помочь мне с этим?

во-первых, нужно добавить номер страницы в PDF-файле перед его créate,
во-вторых, сгруппировать элементы по одному столбцу и, когда элемент отличается, показать эту строку/строки на новой странице, что-то вроде группы строк по столбцам на разных страницах.

2 Ответов

Рейтинг:
2

dkamble 10358990

Наследование PdfPageEventHelper от itext sharp и реализация OnStartPage ,OnEndPage, как показано ниже
публичный класс itsEventsHandler : PdfPageEventHelper
{
общественного переопределить недействительными OnStartPage(PdfWriter писатель, iTextSharp.текст.Документ документ)
{
// добавить данные заголовка
}
общественного переопределить недействительными OnEndPage(PdfWriter писателя, документ )
{
// добавить номер страницы в нижний колонтитул
}
}


Рейтинг:
1

drvfn

Кто-нибудь может помочь мне с этим? Другое решение Пожалуйста