【问题标题】:Does iText 7 pdfHtml Support CSS Grid Layout?iText 7 pdfHtml 是否支持 CSS 网格布局?
【发布时间】:2020-10-16 18:46:45
【问题描述】:

我似乎无法找到关于 iText 7 是否支持 CSS 网格布局的明确答案。在我的 C# 代码中,我只是使用这一行:

HtmlConverter.ConvertToPdf(new FileInfo(@"testgrid.html"), new FileInfo(@"out.pdf"));

注意:我使用的是 iText 7 v7.1.12

假设我的 html/css 代码如下所示:

@page {
    size: A4;
    margin: 0;
}

.grid {
    display: grid;
    grid-template-rows: 1fr 1fr;
    grid-template-columns: 1fr 1fr;
}
<div class="grid">
    <div>
        <h3>A</h3>
    </div>
    <div>
        <h3>B</h3>
    </div>
    <div>
        <h3>C</h3>
    </div>
    <div>
        <h3>D</h3>
    </div>
</div>

如果运行上面的 html sn-p,可以看到网格布局按预期显示,但是当我运行 C# 代码并打开我的out.pdf 文件时,网格样式被忽略,我看到 A, B、C 和 D 在不同的行上。

我是否遗漏了什么,或者 iText 7 HtmlConverter 根本不支持 CSS 中的 display: grid;

【问题讨论】:

  • 我也尝试过使用 IronPDF 而不是 iText 7,甚至将我的代码转换为使用 display: flex;而不是显示:网格;但据我所知,IronPDF 和 iText 7 似乎都不支持使用 display: grid;或显示:flex;
  • 似乎推荐的解决方法是使用 table 代替。没有更好的方法吗?

标签: c# html css itext7 html-to-pdf


【解决方案1】:

IronPDFiText 7 HTML 到 PDF 转换器都不支持 display: grid;display: flex;

如果您想使用 C# 将 HTML/CSS 转换为 PDF,但它包含 grid/flex,我认为您可以做到这一点的唯一方法是使用 headless chrome:

var process = new System.Diagnostics.Process();
process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
String command = "/C \"\"C:/Program Files/Google/Chrome/Application/chrome.exe\"\" --headless --disable-gpu --print-to-pdf=C:/users/xxxxx/Documents/file.pdf --print-to-pdf-no-header C:/users/xxxxx/Documents/file.html";
System.Diagnostics.Process.Start("cmd.exe", command);

【讨论】:

  • 最新版本的 iText7 现在也支持 CSS Flexbox。
  • IronPdf 支持显示:网格;和显示:弯曲;现在是 2021 年
猜你喜欢
  • 2019-04-12
  • 2018-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-10
  • 2018-03-30
  • 1970-01-01
相关资源
最近更新 更多