gpt4 book ai didi

c# - razorPDF - 自动页码

转载 作者:太空狗 更新时间:2023-10-30 01:18:42 30 4
gpt4 key购买 nike

我使用 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 在 vi​​sual 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,好的起点是:

iTextSharp Tutorial

How to convert HTML to PDF using iTextSharp

How to Add Page number in Footer in PDF by Itextsharp

关于c# - razorPDF - 自动页码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26102065/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com