C# NReco HtmlToPdfConverter 页面宽度
C# NReco HtmlToPdfConverter Page Width
我正在尝试从 HTML 字符串创建 PDF 文件,基本上 HTML 是一个包含多个列的 Table。问题是当我生成 PDF 文件时,我无法看到所有的列。
我已经尝试了几种选择,但到目前为止都不成功:
var generator = new NReco.PdfGenerator.HtmlToPdfConverter();
generator.CustomWkHtmlPageArgs = "--enable-smart-shrinking";
generator.CustomWkHtmlArgs = "--page-width value";
generator.PageWidth = Value;
所有 HTML 元素,如 body 和 table 的宽度都为 100%
如何使 HTML 适合一页?
这是HTML:
<!doctype html>
<html lang="en">
<body >
<table border="1" width="100%">
<tr>
<th >Heat Id</th>
<th >Heat Order Id</th>
<th >MSP</th>
<th >Grade</th>
<th >Recipe</th>
<th >Shift</th>
<th >Crew</th>
<th >Start Date</th>
<th >End Date</th>
<th >Tap Date</th>
<th >Tap Wt. (Tons)</th>
<th >Scale Tap Wt. (Tons)</th>
<th >Cast Heat Wt.</th>
<th >Cast Slab Wt.</th>
<th >Charge Wt. (Tons)</th>
<th >Pseudo 1 Bucket</th>
<th >Scrap Wt. (Tons)</th>
<th >Scrap Flux Wt. (Tons)</th>
<th >Alloys Wt. (Lbs)</th>
<th >Tap Flux Wt. (Lbs)</th>
<th >MWH</th>
<th >Avg MW</th>
<th >KWH / Charge Ton</th>
<th >Tap To Tap Time A & B Furnace (min)</th>
<th >Tap To Tap Time Single Furnace (min)</th>
<th >Power On Time (min)</th>
<th >Power On %</th>
<th >Delay Time (min)</th>
<th >Tons / Hr</th>
<th >Total O2</th>
<th >Total O2 SS</th>
<th >Total Gas</th>
<th >Total C</th>
<th >Tap Temp</th>
<th >Tap C</th>
<th >Tap O2</th>
<th >Ladle ID</th>
<th >Comments</th>
<th >Auto Preheat On Time (min)</th>
<th >Auto Preheat Energy (MWH)</th>
<th >Heating/Lancing Energy (MWH)</th>
</tr>
</table>
</body>
</html>
在大多数情况下,您无法看到所有列,因为您的 table 需要比 PDF 页面上可用的更多 space 指定宽度(以毫米为单位)和默认 DPI。对于 A4 尺寸,请尝试在网络浏览器中打开您的 HTML 模板,将其 window 的宽度调整为大约 800-900 像素,然后查看页面布局发生了什么。
顺便说一句,以下代码行设置了相同的 wkhtmltopdf 选项:
generator.CustomWkHtmlArgs = "--page-width value";
generator.PageWidth = Value;
我最终结合了方向、缩放和页面大小:
generator.Orientation = NReco.PdfGenerator.PageOrientation.Landscape
generator.Zoom = 0.55f;
generator.Size = NReco.PdfGenerator.PageSize.A3;
这样,我就可以显示所有的列了。
我正在尝试从 HTML 字符串创建 PDF 文件,基本上 HTML 是一个包含多个列的 Table。问题是当我生成 PDF 文件时,我无法看到所有的列。
我已经尝试了几种选择,但到目前为止都不成功:
var generator = new NReco.PdfGenerator.HtmlToPdfConverter();
generator.CustomWkHtmlPageArgs = "--enable-smart-shrinking";
generator.CustomWkHtmlArgs = "--page-width value";
generator.PageWidth = Value;
所有 HTML 元素,如 body 和 table 的宽度都为 100%
如何使 HTML 适合一页?
这是HTML:
<!doctype html>
<html lang="en">
<body >
<table border="1" width="100%">
<tr>
<th >Heat Id</th>
<th >Heat Order Id</th>
<th >MSP</th>
<th >Grade</th>
<th >Recipe</th>
<th >Shift</th>
<th >Crew</th>
<th >Start Date</th>
<th >End Date</th>
<th >Tap Date</th>
<th >Tap Wt. (Tons)</th>
<th >Scale Tap Wt. (Tons)</th>
<th >Cast Heat Wt.</th>
<th >Cast Slab Wt.</th>
<th >Charge Wt. (Tons)</th>
<th >Pseudo 1 Bucket</th>
<th >Scrap Wt. (Tons)</th>
<th >Scrap Flux Wt. (Tons)</th>
<th >Alloys Wt. (Lbs)</th>
<th >Tap Flux Wt. (Lbs)</th>
<th >MWH</th>
<th >Avg MW</th>
<th >KWH / Charge Ton</th>
<th >Tap To Tap Time A & B Furnace (min)</th>
<th >Tap To Tap Time Single Furnace (min)</th>
<th >Power On Time (min)</th>
<th >Power On %</th>
<th >Delay Time (min)</th>
<th >Tons / Hr</th>
<th >Total O2</th>
<th >Total O2 SS</th>
<th >Total Gas</th>
<th >Total C</th>
<th >Tap Temp</th>
<th >Tap C</th>
<th >Tap O2</th>
<th >Ladle ID</th>
<th >Comments</th>
<th >Auto Preheat On Time (min)</th>
<th >Auto Preheat Energy (MWH)</th>
<th >Heating/Lancing Energy (MWH)</th>
</tr>
</table>
</body>
</html>
在大多数情况下,您无法看到所有列,因为您的 table 需要比 PDF 页面上可用的更多 space 指定宽度(以毫米为单位)和默认 DPI。对于 A4 尺寸,请尝试在网络浏览器中打开您的 HTML 模板,将其 window 的宽度调整为大约 800-900 像素,然后查看页面布局发生了什么。
顺便说一句,以下代码行设置了相同的 wkhtmltopdf 选项:
generator.CustomWkHtmlArgs = "--page-width value";
generator.PageWidth = Value;
我最终结合了方向、缩放和页面大小:
generator.Orientation = NReco.PdfGenerator.PageOrientation.Landscape
generator.Zoom = 0.55f;
generator.Size = NReco.PdfGenerator.PageSize.A3;
这样,我就可以显示所有的列了。