Добавить номер страницы и порядок столбцов в различных страниц на 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,
во-вторых, сгруппировать элементы по одному столбцу и, когда элемент отличается, показать эту строку/строки на новой странице, что-то вроде группы строк по столбцам на разных страницах.