Я использую wkHTMLtoPDF и хочу изменить ориентацию в PDF в зависимости от длины заголовков в HTML, но я не уверен, что это правильный способ сделать это.
private const double A4Width = 2480; // A4 pixel width
Метод обнаружения ландшафта
private bool IsLandscape(string html)
{
int start = html.IndexOf("<th>");
int end = html.LastIndexOf("</th>") - start;
string tableHeadings = html.Substring(start, end).Replace("<th>", string.Empty).Replace("</th>", string.Empty);
FontFamily fontFamily = new FontFamily("Arial");
Font font = new Font(fontFamily, 13);
var size = MeasureString(tableHeadings, font);
if(size.Width > A4Width)
{
return true;
}
return false;
}
Метод расчета шрифта
private SizeF MeasureString(string content, Font font)
{
SizeF result = SizeF.Empty;
using (var image = new Bitmap(1,1))
{
using (var g = Graphics.FromImage(image))
{
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
result = g.MeasureString(content, font, int.MaxValue, StringFormat.GenericTypographic);
}
}
return result;
}
Примечание. Этот код находится в библиотеке, поэтому я использовал этот вопрос для измерения строки.
Обновить
Если коротко:
Я ищу лучшую практику реализации проблемы.
Обзор проблемы:
Я создаю из HTML PDF-файл, внутри которого есть таблица. Я получаю столбцы таблицы (например: Col1, Col2) и удаляю теги (например: Col1Col2). Затем я хочу рассчитать размер (в пикселях) этого строкового результата (используя шрифт с указанным размером текста), и если этот размер превышает размер портрета A4, поверните PDF в альбомную ориентацию.