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;

这样,我就可以显示所有的列了。