- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我使用 C# MVC 通过 PdfResult 传递 HTML 局部 View 来创建报告。除了缺少页码之外,这提供了所需的确切内容。
GetDetails
只是调用返回结果列表的服务。然后使用结果列表作为模型调用 printlist
View (见下文)。
RazorPDF 是否提供在报告上放置页码的方法?
public ActionResult PrintReport(DateTime printDate)
{
var printModel = printController.GetDetails(printDate);
var pdfDoc = new PdfResult(printModel , "printlist");
return pdfDoc;
}
查看:
<paragraph style="font-family:Arial;font-size:18;">
<table width="100%" cellpadding="1.0" cellspacing="1.0" widths="5;5">
<row>
<cell borderwidth="0.5" left="false" right="false" top="false" bottom="false">
<chunk style="font-size:14;font-weight:bold;">@ViewBag.Title</chunk>
</cell>
<cell borderwidth="0.5" left="false" right="false" top="false" bottom="false" horizontalalign="Right">
<chunk style="font-size:14;font-weight:bold;">@Model.First().appointment_date.ToString().Substring(0,10)</chunk>
</cell>
</row>
</table>
</paragraph>
<table width="100%" cellpadding="1.0" cellspacing="1.0" widths="4;10;7;14;4;4;4;3;4;4;4;4">
<row>
<cell borderwidth="0.5" left="false" right="false" top="true" bottom="true"><chunk>Time</chunk></cell>
<cell borderwidth="0.5" left="false" right="false" top="true" bottom="true"><chunk>Name</chunk></cell>
<cell borderwidth="0.5" left="false" right="false" top="true" bottom="true"><chunk>Number</chunk></cell>
<cell borderwidth="0.5" left="false" right="false" top="true" bottom="true"><chunk>Reason</chunk></cell>
</row>
@foreach (var item in Model)
{
<row>
<cell>@item.appointmentStart</cell>
<cell>@item.surname,@item.forename</cell>
<cell>@item.customerIdentifier</cell>
<cell>@item.reason</cell>
</row>
}
</table>
最佳答案
RazorPDF 无法在 PDF 文件中设置页码。这是因为它具有 Object -> ActionResult -> ViewResultBase -> ViewResult 中可用的属性(您可以通过展开引用并双击 RazorPDF 在 visual studio 中查看这些属性)。
要添加页码,您必须在 View 本身中进行计算以确定分页符的位置并将它们放入。您可以通过向 View 传递一个参数来表示它是否是用于创建 pdf 并仅显示当时的页码。
我遇到了类似的问题并尝试了各种软件包(RazorPDF、iTextSharp 和 HiQPdf)。如果您不限于 RazorPDF,我建议您查看 HiQPdf。您基本上可以设置一个定义页眉和页脚元素的 ActionResult,将 View 的 html 传递给它,它会呈现一个 PDF,其中包含您想要的页眉和页脚(如果您设置了它们)。对于页码,它非常简单:
var pdfWorker = new HtmlToPdf();
var html = "Html as string including tags";
var url = "Whatever url you are converting - still works if empty string";
pdfWorker.Document.Footer.Enabled = true;
var pageNumberFont = new Font(new FontFamily("Arial"), 8, GraphicsUnit.Point);
var pageNumberText = new PdfText(x-position, y-position, "Page {CrtPage} of {PageCount}, pageNumberFont);
pdfWorker.Document.Footer.Layout(pageNumberText);
return pdfWorker.ConvertHtmlToPdfDocument(html, url);
我的代码中有一些额外的定制 - 但这应该是在每页底部为您提供带有“Page x of y”的页脚的基本数量。
编辑: 由于解决方案仅限于免费选项,我建议查看 iTextSharp .如果您使用的是 NuGet,则可以通过 NuGet 包获取它。
至于使用 iTextSharp,好的起点是:
关于c# - razorPDF - 自动页码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26102065/
我使用 C# MVC 通过 PdfResult 传递 HTML 局部 View 来创建报告。除了缺少页码之外,这提供了所需的确切内容。 GetDetails 只是调用返回结果列表的服务。然后使用结果列
我在我的 Asp.net MVC5 项目中使用 MvcRazorToPdf 从模型创建 pdf。这工作正常,但我想包含来自 base64 字符串的图像,因为我不想保存生成的图像。 System.Dra
我是一名优秀的程序员,十分优秀!