2

我有一个视图传递给Rotativa (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>

还有什么我可以在这里尝试的吗?

谢谢!

4

3 回答 3

1

您可以为 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>
}
于 2013-08-29T14:16:22.990 回答
1

试试这个CSS:

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

参考

于 2013-08-29T13:59:19.820 回答
0

Rotativa 不渲染为打印媒体,但作为浏览器,您必须强制渲染为打印。发送 " --print-media-type" 参数

这样做你可以使用 css 来隐藏打印的媒体

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

前任:

    return new ViewAsPdf("Details", obj)
                    {
                        CustomSwitches = "--print-media-type"
}

完整示例:

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
                };
于 2020-01-28T14:03:03.243 回答