Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 删除一个";“打印”;从视图呈现PDF之前的按钮-MVC3_C#_Jquery_Asp.net Mvc 3_Wkhtmltopdf - Fatal编程技术网

C# 删除一个";“打印”;从视图呈现PDF之前的按钮-MVC3

C# 删除一个";“打印”;从视图呈现PDF之前的按钮-MVC3,c#,jquery,asp.net-mvc-3,wkhtmltopdf,C#,Jquery,Asp.net Mvc 3,Wkhtmltopdf,我有一个视图,当用户单击“打印”按钮时,我会将其传递给(wkhtmltopdf)以获取该视图的PDF版本供用户打印: 这里是渲染视图,如果用户单击“打印”按钮,该视图将转换为PDF 下面是视图中的按钮代码 <div id="print-pdf" align="center"> <a id="print-me" class = "print-btn" href='@Url.Action("PrintMyView", "Report",

我有一个视图,当用户单击“打印”按钮时,我会将其传递给(wkhtmltopdf)以获取该视图的PDF版本供用户打印:

这里是渲染视图,如果用户单击“打印”按钮,该视图将转换为PDF

下面是视图中的按钮代码

<div id="print-pdf" align="center">
    <a id="print-me"  class = "print-btn"
   href='@Url.Action("PrintMyView", "Report", 
             new { id = Model.MonthlyReportID, 
                   clubKeyNo = Model.ClubKeyNumber, 
                   month = Model.ReportMonth, 
                   year = Model.ReportYear }, null)'>Print Report</a>
</div>

常识告诉我,在从视图生成PDF之前,我需要删除按钮,这样用户就不会得到带有按钮的PDF:

我试图隐藏按钮(.hide())并将其删除(.remove()) 但PDF仍在使用按钮进行渲染:

<script type="text/javascript">

    $(document).ready(function () {

        $('#print-me').show(); 

        $('#print-pdf').click(function () {
            $('#print-me').hide();
        });
    });


</script>

$(文档).ready(函数(){
$(“#打印我”).show();
$('#打印pdf')。单击(函数(){
$(“#打印我”).hide();
});
});
还有什么我可以试试的吗

谢谢

试试这个css:

@media print 
{
    #print-me
    {
        display:none;
    }
}

您可以为PDF制作一个版本,这样您就可以处理应该打印的内容和否

在javascript中运行的东西不起作用,因为当厄运准备就绪时就会执行,但Rotativa不会执行任何javascript

因此,您只需渲染所需的内容

@if (Model.mustPrint){ 
    <div id="print-pdf" align="center">
        <a id="print-me"  class = "print-btn"    href='@Url.Action("PrintMyView", "Report",
                     new
                     {
                         id = Model.MonthlyReportID,
                         clubKeyNo = Model.ClubKeyNumber,
                         month = Model.ReportMonth,
                         year = Model.ReportYear
                     }, null)'>Print Report</a> 
    </div>
}
@if(Model.mustPrint){
}

Rotativa不作为打印介质渲染,但作为浏览器,必须强制渲染为打印。 发送“
--print media type
”参数

如果要打印,可以使用css隐藏媒体

@media print {
.noprint {
display: none! important
}}
例:

完整示例:

return new ViewAsPdf("Details", obj)
                {
                    CustomSwitches = "--print-media-type",
                    FileName = your_name_report.pdf",
                    PageOrientation = Orientation.Portrait,
                    PageSize = Size.A4,
                    PageMargins = new Margins(0, 0, 0, 0),
                    PageWidth = 210,
                    PageHeight = 297
                };

在这种情况下,您的答案不起作用,因为Rotativa不会在浏览器中转换当前视图,当用户发送打印时,这是对服务器的另一个请求,呈现视图并转换为pdfYes,此解决方案非常好。我刚刚创建了一个新的视图模型成员,并按照您的建议使用它。谢谢
return new ViewAsPdf("Details", obj)
                {
                    CustomSwitches = "--print-media-type",
                    FileName = your_name_report.pdf",
                    PageOrientation = Orientation.Portrait,
                    PageSize = Size.A4,
                    PageMargins = new Margins(0, 0, 0, 0),
                    PageWidth = 210,
                    PageHeight = 297
                };