Pdf横向方向使用MeasureString
本文关键字:MeasureString 方向 横向 Pdf | 更新日期: 2023-09-27 18:17:41
我正在使用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;
}
注意:这段代码是在一个库中,所以这就是我用这个问题来测量string的原因。
简写为
我正在寻找实现问题的最佳实践。
问题总结:
我正在从HTML建立一个PDF,里面有一个表。我获得表列(例如:Col1, Col2)并删除标记(例如:Col1Col2)。接下来,我想计算字符串结果的大小(以px为单位)(使用具有指定文本大小的字体),如果该大小超过A4肖像大小,则将PDF旋转到横向
我发现这个问题的最佳实现是在wkHTMLtoPDF中添加一个属性来强制PDF为A4大小。
使用属性:--page-size A4
我还更改了代码,检查测量的宽度大小是否大于A4尺寸。
if(size.Width > (A4Width / 4))
{
return true;
}