使用 MeasureString 的 Pdf 横向方向
Pdf landscape orientation using MeasureString
我正在使用 wkHTMLtoPDF,我想根据 HTML 中 headers 的长度更改 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 构建一个内部有 table 的 PDF。
我得到 table 列(例如:Col1、Col2)并删除标签(例如:Col1Col2)。
接下来我想计算该字符串结果的大小(以像素为单位)(使用具有指定文本大小的字体),如果该大小超过 A4 纵向大小,则将 PDF 旋转为横向。
我发现这个问题的最佳实现是向 wkHTMLtoPDF 添加一个属性以强制 PDF 为 A4 大小。
使用的属性:--page-size A4
我还更改了检查测量的宽度尺寸是否大于 A4 尺寸的代码。
if(size.Width > (A4Width / 4))
{
return true;
}
我正在使用 wkHTMLtoPDF,我想根据 HTML 中 headers 的长度更改 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 构建一个内部有 table 的 PDF。 我得到 table 列(例如:Col1、Col2)并删除标签(例如:Col1Col2)。 接下来我想计算该字符串结果的大小(以像素为单位)(使用具有指定文本大小的字体),如果该大小超过 A4 纵向大小,则将 PDF 旋转为横向。
我发现这个问题的最佳实现是向 wkHTMLtoPDF 添加一个属性以强制 PDF 为 A4 大小。
使用的属性:--page-size A4
我还更改了检查测量的宽度尺寸是否大于 A4 尺寸的代码。
if(size.Width > (A4Width / 4))
{
return true;
}