2015-10-14 376 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; 
}