无需按钮即可从 HTML 生成 PDF
Generate PDF from HTML without buttons
我使用 wkhtmltopdf 从我的网页生成 pdf。
我的项目在 ASP.Net 和 Bootstrap 上。所以页面上的按钮有共同的 类 btn btn-primary
.
据我所知,如果我设置为某个元素 .Visible = false;
,此元素将在 pdf 中不可见。由于页面上有很多按钮,因此通过 Id
设置每个按钮的可见性不太好。
那么我怎样才能仅通过类名从页面中获取所有按钮呢?
我发现了什么:
在某些 post Stack 用户建议中添加事件 OnPreRender
并在此事件中将可见性设置为 false。示例:
<asp:LinkButton ID="lnkContinue" runat="server" OnClick="lnkContinue_Click" CssClass="btn btn-primary" Text="Continue" OnPreRender="Button_PreRender"></asp:LinkButton>
protected void Button_PreRender(object sender, EventArgs e)
{
var button = (HtmlGenericControl)sender;
button.Visible = !button.Attributes.CssStyle.Value.Contains("btn btn-primary");
}
您不应直接使用为您的网页生成的 HTML 作为 PDF 的 HTML。您的网页可能包含不适合在 PDF 中显示的导航和其他 UI 元素(如提到的按钮)。
更好的解决办法是单独生成HTML。这允许您保留对用于创建 PDF 的确切标记的控制。您可以使用 StringBuilder 手动构建 HTML 或使用其他库来创建它。
我最喜欢的方法是使用 Razor PDF for MVC 库。您使用 Razor 语法(非常直观)生成 PDF。
您可以向 wkhtmltopdf 提供您自己的 javascript 函数以迭代每个元素并使它们不可见:
http://wkhtmltopdf.org/usage/wkhtmltopdf.txt
--运行-脚本js
var eles = document.getElementsByClassName('btn btn-primary');
for (var x = 0; x < eles.length; x++) {
eles[x].style.visibility = false;
}
我使用 wkhtmltopdf 从我的网页生成 pdf。
我的项目在 ASP.Net 和 Bootstrap 上。所以页面上的按钮有共同的 类 btn btn-primary
.
据我所知,如果我设置为某个元素 .Visible = false;
,此元素将在 pdf 中不可见。由于页面上有很多按钮,因此通过 Id
设置每个按钮的可见性不太好。
那么我怎样才能仅通过类名从页面中获取所有按钮呢?
我发现了什么:
在某些 post Stack 用户建议中添加事件 OnPreRender
并在此事件中将可见性设置为 false。示例:
<asp:LinkButton ID="lnkContinue" runat="server" OnClick="lnkContinue_Click" CssClass="btn btn-primary" Text="Continue" OnPreRender="Button_PreRender"></asp:LinkButton>
protected void Button_PreRender(object sender, EventArgs e)
{
var button = (HtmlGenericControl)sender;
button.Visible = !button.Attributes.CssStyle.Value.Contains("btn btn-primary");
}
您不应直接使用为您的网页生成的 HTML 作为 PDF 的 HTML。您的网页可能包含不适合在 PDF 中显示的导航和其他 UI 元素(如提到的按钮)。
更好的解决办法是单独生成HTML。这允许您保留对用于创建 PDF 的确切标记的控制。您可以使用 StringBuilder 手动构建 HTML 或使用其他库来创建它。
我最喜欢的方法是使用 Razor PDF for MVC 库。您使用 Razor 语法(非常直观)生成 PDF。
您可以向 wkhtmltopdf 提供您自己的 javascript 函数以迭代每个元素并使它们不可见:
http://wkhtmltopdf.org/usage/wkhtmltopdf.txt
--运行-脚本js
var eles = document.getElementsByClassName('btn btn-primary');
for (var x = 0; x < eles.length; x++) {
eles[x].style.visibility = false;
}