我正在使用wkHTMLtoPDF,我想根据HTML中标题的长度更改PDF的方向,但我不确定这是否是正确的方法。
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;
}
注意:此代码位于库中,因此我使用this问题来测量字符串。
更新
简短:
我正在寻找实施该问题的最佳做法。
问题摘要:
我正在从HTML构建一个内部有一个表的PDF。 我得到表格列(例如:Col1,Col2)并删除标签(例如:Col1Col2)。 接下来,我想计算该字符串结果的大小(以px为单位)(使用具有指定文本大小的Font),如果该大小超出A4纵向大小,则将PDF旋转为横向。
答案 0 :(得分:1)
我发现此问题的最佳实现是向wkHTMLtoPDF添加一个属性以强制PDF为A4大小。
使用的属性:--page-size A4
此外,我更改了检查测量宽度尺寸是否大于A4尺寸的代码。
if(size.Width > (A4Width / 4))
{
return true;
}