From 1cbc55bbe97dfbb4b2104478f1ffb1aa1dbb35ce Mon Sep 17 00:00:00 2001 From: Kirill <117719052+KirillFirsof@users.noreply.github.com> Date: Sun, 17 Nov 2024 17:35:47 +0400 Subject: [PATCH] =?UTF-8?q?=D0=B2=D1=82=D0=BE=D1=80=D0=BE=D0=B9=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BC=D0=BF=D0=BE=D0=BD=D0=B5=D0=BD=D1=82=20=D1=82=D0=BE?= =?UTF-8?q?=D0=B6=D0=B5=20=D0=B2=D1=80=D0=BE=D0=B4=D0=B5=20=D0=BA=D0=B0?= =?UTF-8?q?=D0=BA=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/PdfTable/PdfTable.cs | 129 +++++++++++++++++- .../Components/PdfTable/PdfTableInfo.cs | 21 ++- WinFormsApp1/Documents/PdfWithTable.pdf | Bin 0 -> 54975 bytes WinFormsApp1/Form1.Designer.cs | 15 ++ WinFormsApp1/Form1.cs | 52 +++++++ WinFormsApp1/Form1.resx | 3 + WinFormsApp1/SampleClass.cs | 13 ++ 7 files changed, 230 insertions(+), 3 deletions(-) create mode 100644 WinFormsApp1/Documents/PdfWithTable.pdf diff --git a/CheckedListBoxLibrary/Components/PdfTable/PdfTable.cs b/CheckedListBoxLibrary/Components/PdfTable/PdfTable.cs index 66e832f..9d75c9b 100644 --- a/CheckedListBoxLibrary/Components/PdfTable/PdfTable.cs +++ b/CheckedListBoxLibrary/Components/PdfTable/PdfTable.cs @@ -1,4 +1,10 @@ -using System; +using MyUserControls.Components.office_package.HelperEnums; +using MyUserControls.Components.office_package.HelperModels; +using MyUserControls.Components.office_package.Implements; +using MyUserControls.Components.office_package; +using MigraDoc.DocumentObjectModel; +using MigraDoc.Rendering; +using System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; @@ -10,6 +16,8 @@ namespace MyUserControls.Components.PdfTable { public partial class PdfTable : Component { + ISaveToPdf SaveToPdf = new SaveToPdf(); + public PdfTable() { InitializeComponent(); @@ -21,5 +29,124 @@ namespace MyUserControls.Components.PdfTable InitializeComponent(); } + public void CreatePdf(PdfTableInfo info) + { + info.CheckFields(); + SaveToPdf.CreatePdf(info); + SaveToPdf.CreateParagraph(new PdfParagraph + { + Text = info.Title, + Style = "NormalTitle", + ParagraphAlignment = PdfParagraphAlignmentType.Center + }); + SaveToPdf.CreateTableWithColumns(info.Data.Count + 2); + SaveToPdf.CreateRow(new PdfRowParameters()); + int rowIndex = 0; + int columnIndex = 0; + List properties = new List(); + string? header; + foreach (var node in info.Headers) + { + if (string.IsNullOrWhiteSpace(node.Text)) + { + throw new Exception("Cannot read header"); + } + SaveToPdf.CreateRow(new PdfRowParameters()); + SaveToPdf.InsertTextIntoCell( + rowIndex, + columnIndex, + new PdfCellParameters + { + Text = node.Text, + Style = "NormalTitle", + ParagraphAlignment = PdfParagraphAlignmentType.Center + }); + if (node.Nodes.Count == 0) + { + SaveToPdf.MergeCells(new PdfCellsMergeParameters + { + RowIndex = rowIndex, + ColumnIndex = columnIndex, + Direction = PdfCellsMergeDirections.Right + }); + header = node.Tag as string; + if (header == null) + { + throw new Exception("Cannot read property name"); + } + properties.Add(header); + rowIndex++; + } + else + { + int mergeRowIndex = rowIndex; + int mergeColumnIndex = columnIndex; + foreach (TreeNode child in node.Nodes) + { + if (string.IsNullOrWhiteSpace(child.Text)) + { + throw new Exception("Cannot read header"); + } + SaveToPdf.CreateRow(new PdfRowParameters()); + SaveToPdf.InsertTextIntoCell( + rowIndex, + columnIndex + 1, + new PdfCellParameters + { + Text = child.Text, + Style = "NormalTitle", + ParagraphAlignment = PdfParagraphAlignmentType.Left + }); + header = child.Tag as string; + if (header == null) + { + throw new Exception("Cannot read property name"); + } + properties.Add(header); + rowIndex++; + } + SaveToPdf.MergeCells(new PdfCellsMergeParameters + { + RowIndex = mergeRowIndex, + ColumnIndex = mergeColumnIndex, + Direction = PdfCellsMergeDirections.Down, + CellNumber = node.Nodes.Count - 1 + }); + } + } + columnIndex = 2; + foreach (var obj in info.Data) + { + if (obj == null) + { + throw new Exception("Table Data element cannot be null"); + } + List cells = new List(); + for (int i = 0; i < properties.Count; i++) + { + string propertyName = properties[i]; + var property = obj.GetType().GetProperty(propertyName); + if (property is null) + { + throw new ArgumentException($"Failed to find property {propertyName} in provided objects class"); + } + var value = property.GetValue(obj)?.ToString(); + if (value == null) + { + throw new ArgumentException($"Failed to find property {propertyName} in provided objects class"); + } + cells.Add(value); + } + SaveToPdf.InsertTextIntoColumn(new PdfColumnParameters + { + Texts = cells, + ColumnIndex = columnIndex, + Style = "Normal", + ParagraphAlignment = PdfParagraphAlignmentType.Left + }); + columnIndex++; + } + SaveToPdf.SavePdf(info); + } } } diff --git a/CheckedListBoxLibrary/Components/PdfTable/PdfTableInfo.cs b/CheckedListBoxLibrary/Components/PdfTable/PdfTableInfo.cs index e03e737..a9264be 100644 --- a/CheckedListBoxLibrary/Components/PdfTable/PdfTableInfo.cs +++ b/CheckedListBoxLibrary/Components/PdfTable/PdfTableInfo.cs @@ -1,4 +1,5 @@ -using System; +using MyUserControls.Components.office_package.HelperModels; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -6,7 +7,23 @@ using System.Threading.Tasks; namespace MyUserControls.Components.PdfTable { - internal class PdfTableInfo + public class PdfTableInfo : IPdfInfo { + public string FileName { get; set; } = string.Empty; + public string Title { get; set; } = string.Empty; + public List Headers { get; set; } = new(); + public List Data { get; set; } = new(); + + public void CheckFields() + { + if (string.IsNullOrWhiteSpace(FileName)) + throw new ArgumentException("Имя файла не может быть пустым.", nameof(FileName)); + if (string.IsNullOrWhiteSpace(Title)) + throw new ArgumentException("Название документа не может быть пустым.", nameof(Title)); + if (Headers == null || Headers.Count == 0) + throw new ArgumentException("Заголовки для шапки не могут быть пустыми.", nameof(Headers)); + if (Data == null || Data.Count == 0) + throw new ArgumentException("Данные для таблицы не могут быть пустыми.", nameof(Data)); + } } } diff --git a/WinFormsApp1/Documents/PdfWithTable.pdf b/WinFormsApp1/Documents/PdfWithTable.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e3c435996aa0f54627bed1f621ad9a75334c1bcd GIT binary patch literal 54975 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ⅆ<4a=Q5%jGHXTah~AX0%*_QrTWw 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 literal 0 HcmV?d00001 diff --git a/WinFormsApp1/Form1.Designer.cs b/WinFormsApp1/Form1.Designer.cs index 21cdb4c..bf8e714 100644 --- a/WinFormsApp1/Form1.Designer.cs +++ b/WinFormsApp1/Form1.Designer.cs @@ -39,6 +39,8 @@ listBoxImages = new ListBox(); chooseImage = new Button(); createPdfImages = new Button(); + pdfTable = new MyUserControls.Components.PdfTable.PdfTable(components); + createTable = new Button(); SuspendLayout(); // // smartCheckedListBox1 @@ -112,11 +114,22 @@ createPdfImages.UseVisualStyleBackColor = true; createPdfImages.Click += createPdfImages_Click; // + // createTable + // + createTable.Location = new Point(330, 316); + createTable.Name = "createTable"; + createTable.Size = new Size(184, 31); + createTable.TabIndex = 9; + createTable.Text = "создать таблицу пдф"; + createTable.UseVisualStyleBackColor = true; + createTable.Click += createTable_Click; + // // Form1 // AutoScaleDimensions = new SizeF(8F, 20F); AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(1120, 474); + Controls.Add(createTable); Controls.Add(createPdfImages); Controls.Add(chooseImage); Controls.Add(listBoxImages); @@ -142,5 +155,7 @@ private ListBox listBoxImages; private Button chooseImage; private Button createPdfImages; + private MyUserControls.Components.PdfTable.PdfTable pdfTable; + private Button createTable; } } diff --git a/WinFormsApp1/Form1.cs b/WinFormsApp1/Form1.cs index 6535228..af090f0 100644 --- a/WinFormsApp1/Form1.cs +++ b/WinFormsApp1/Form1.cs @@ -1,6 +1,7 @@ using MyUserControls; using MyUserControls.Components.office_package.Implements; using MyUserControls.Components.PdfImage; +using MyUserControls.Components.PdfTable; using System.ComponentModel; @@ -131,5 +132,56 @@ namespace WinFormsApp1 } } + private void createTable_Click(object sender, EventArgs e) + { + try + { + List headers = new List + { + new TreeNode + { + Text = "Name", + Tag = "Name", + }, + new TreeNode("Info", new TreeNode[] + { + new TreeNode + { + Text = "Category", + Tag = "Category" + }, + new TreeNode + { + Text = "SubCategory", + Tag = "SubCategory" + } + }) + }; + List data = new List + { + new SampleClass("a1", "d1", "f1"), + new SampleClass("a2", "d2", "f2"), + new SampleClass("a3", "d3", "f3") + }; + string currentDirectory = Directory.GetCurrentDirectory(); + + string filePath = Path.Combine(currentDirectory, @"..\..\..\Documents\PdfWithTable.pdf"); + + var info = new PdfTableInfo + { + FileName = filePath, + Title = "Title", + Headers = headers, + Data = data + }; + pdfTable.CreatePdf(info); + MessageBox.Show("PDF !", " ", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message); + } + } + } } diff --git a/WinFormsApp1/Form1.resx b/WinFormsApp1/Form1.resx index e213689..68b4e87 100644 --- a/WinFormsApp1/Form1.resx +++ b/WinFormsApp1/Form1.resx @@ -123,4 +123,7 @@ 183, 17 + + 304, 17 + \ No newline at end of file diff --git a/WinFormsApp1/SampleClass.cs b/WinFormsApp1/SampleClass.cs index e5b18e2..59b269b 100644 --- a/WinFormsApp1/SampleClass.cs +++ b/WinFormsApp1/SampleClass.cs @@ -16,5 +16,18 @@ namespace WinFormsApp1 { return Name + " " + Category + " " + SubCategory; } + + public SampleClass() { + Name = string.Empty; + Category = string.Empty; + SubCategory = string.Empty; + } + + public SampleClass(string name, string category, string subCategory) + { + Name = name; + Category = category; + SubCategory = subCategory; + } } }