2015-10-14 46 views
-1

我正在使用wkHTMLtoPDF,并且我想根据HTML中标题的长度更改PDF的方向,但我不确定这是否是正确的方式。使用MeasureString的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为单位)(使用具有指定文本大小的字体),并且如果该大小超过A4纵向大小,则会将PDF旋转到横向。

+0

嗨,对不起,请你延长你的问题,我不明白你的问题。你是否正在寻找一个完美的最佳实践? – Payedimaunt

+0

我已经更新了这个问题。随意问,如果你不明白的东西。谢谢! –

+0

我还没有找到确切的确切解决方案,但下面我找到了一些关于如何找到实际可打印区域的信息。 我希望它能帮助你 – Payedimaunt

回答

1

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

属性:--page-size A4

另外我已经改变来检查,如果测得的宽度尺寸是磨碎机比A4尺寸的代码。

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