Я создаю PDF-документ, используя PDFSharp, который использует ту же (маленькую) таблицу снова и снова.C# PDFSharp - в чем смысл Table.Clone?
Я видел, что можно клонировать всю таблицу. Я сделал мастер-таблицу со всеми основными настройками, которые мне нужны, и несколькими строками, думая, что я могу просто использовать метод Table.Clone()
на главной таблице, чтобы вернуть новую красивую новую таблицу, которая может быть выровнена, а затем нарисована в документе.
Клонирование работает, но когда речь идет на самом деле нарисовать таблицу на странице System.ArgumentFormat
исключение:
"Value of '0' is not valid for 'emSize'. 'emSize' should be greater than 0 and less than or equal to System.Single.MaxValue.\r\nParameter name: emSize"
(в System.Drawing.dll)
кажется каждая таблица должна быть добавлен на страницу с использованием метода page.AddTable()
.
Если это так, то какова цель Table.Clone(), если его невозможно затем нарисовать клонированную таблицу на страницу?
Вот значительно упрощена тест:
Table test_table = new Table();
test_table.Style = "Table";
test_table.Borders.Color = Colors.Black;
test_table.AddColumn(50);
test_table.AddColumn(50);
Row table_row_1 = test_table.AddRow();
table_row_1.Format.Font.Name = "Verdana";
table_row_1.Format.Font.Size = 8;
Row table_row_2 = test_table.AddRow();
table_row_2.Format.Font.Name = "Verdana";
table_row_2.Format.Font.Size = 8;
Table cloned_table = test_table.Clone();
cloned_table.Rows[0].Cells[0].AddParagraph("row 1 cell 1");
cloned_table.Rows[0].Cells[1].AddParagraph("row 1 cell 2");
cloned_table.Rows[1].Cells[0].AddParagraph("row 2 cell 1");
cloned_table.Rows[1].Cells[1].AddParagraph("row 2 cell 2");
test_table.SetEdge(0, 0, cloned_table.Columns.Count, cloned_table.Rows.Count, Edge.Box, BorderStyle.Single, 0.75, Colors.Black);
MigraDoc.Rendering.DocumentRenderer cloned_table_renderer = new DocumentRenderer(doc);
cloned_table_renderer.PrepareDocument();
cloned_table_renderer.RenderObject(gfx, 50, 50, 100, cloned_table);
Спасибо, я дам метод section.Add() и посмотрю, будет ли это работать. – dalemac
Работало с помощью page.Add (cloned_table). Затем я мог бы использовать RenderObject для рисования таблицы на странице. – dalemac
О, и причина, по которой я использую RenderObject(), состоит в том, что положение таблицы очень специфично. – dalemac