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旋转到横向

Pdf横向方向使用MeasureString

我发现这个问题的最佳实现是在wkHTMLtoPDF中添加一个属性来强制PDF为A4大小。

使用属性:--page-size A4

我还更改了代码,检查测量的宽度大小是否大于A4尺寸。

if(size.Width > (A4Width / 4))
{
    return true;
}