从HTML生成PDF而不使用按钮

时间:2015-01-26 16:15:31

标签: html css asp.net wkhtmltopdf

我用来从我的网页wkhtmltopdf生成pdf。

我的项目在ASP.Net和Bootstrap上。因此页面上的按钮具有公共类btn btn-primary

据我所知,如果我设置为某个元素.Visible = false;,则此元素在pdf上将不可见。由于页面上有许多按钮,因此Id设置每个按钮的可见性并不是很好。

那么如何才能通过className从页面获取所有按钮?

我找到了什么:

在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");

}

2 个答案:

答案 0 :(得分:0)

您不应直接将为您的网页生成的HTML用作PDF的HTML。您的网页可能包含不适合在PDF中显示的导航和其他UI元素(如提到的按钮)。

更好的解决方案是单独生成HTML。这使您可以保留对用于创建PDF的确切标记的控制。您可以使用StringBuilder手动构建HTML,也可以使用其他库来创建HTML。

我最喜欢的方法是使用Razor PDF for MVC库。您可以使用Razor语法(非常直观)生成PDF。

答案 1 :(得分:0)

您可以为wkhtmltopdf提供自己的javascript函数,以迭代每个元素并使它们不可见:

http://wkhtmltopdf.org/usage/wkhtmltopdf.txt

- run-script js

var eles = document.getElementsByClassName('btn btn-primary');
for (var x = 0; x < eles.length; x++) {
    eles[x].style.visibility = false;
}