我用来从我的网页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");
}
答案 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;
}