using MigraDoc.DocumentObjectModel; using MigraDoc.DocumentObjectModel.Tables; using MigraDoc.Rendering; using System.ComponentModel; using Document = MigraDoc.DocumentObjectModel.Document; namespace FormLibrary { public partial class PDFTable : Component { public PDFTable() { InitializeComponent(); System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance); } public PDFTable(IContainer container) { container.Add(this); InitializeComponent(); } // Публичный метод для генерации PDF-документа public void GeneratePdf(string fileName, string documentTitle, List tables) { // Проверка на корректность входных данных if (string.IsNullOrWhiteSpace(fileName)) throw new ArgumentException("Имя файла не может быть пустым."); if (string.IsNullOrWhiteSpace(documentTitle)) throw new ArgumentException("Название документа не может быть пустым."); if (tables == null || tables.Count == 0) throw new ArgumentException("Необходимо передать хотя бы одну таблицу."); // Создание документа Document document = new Document(); Section section = document.AddSection(); // Установка заголовка документа Paragraph title = section.AddParagraph(); title.AddFormattedText(documentTitle, TextFormat.Bold); title.Format.Alignment = ParagraphAlignment.Center; section.AddParagraph(); // Пустая строка // Обработка таблиц foreach (var tableData in tables) { // Создание таблицы Table table = section.AddTable(); int columnsCount = tableData.GetLength(1); // Определение колонок for (int i = 0; i < columnsCount; i++) { Column column = table.AddColumn(Unit.FromCentimeter(3)); // Ширина колонки 3 см } // Настройка границ таблицы table.Borders.Width = 0.75; // Толщина границ таблицы table.Borders.Color = Colors.Black; // Цвет границ таблицы // Добавление строк и ячеек for (int i = 0; i < tableData.GetLength(0); i++) { Row row = table.AddRow(); for (int j = 0; j < tableData.GetLength(1); j++) { row.Cells[j].AddParagraph(tableData[i, j]); } } section.AddParagraph(); // Пустая строка после таблицы } // Сохранение документа PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer(true); pdfRenderer.Document = document; pdfRenderer.RenderDocument(); pdfRenderer.PdfDocument.Save(fileName); } } }