0

在我的 MVC 应用程序中,当涉及到打印报告时,我几乎没有选择

RazorPDF - 从 cshtml 本身处理设计的优势 & 可以将来自控制器的值作为模型传递

iTextSharp - 从 cshtml 本身处理设计的优势 & 可以将来自控制器的值作为模型传递

pdfSharp - 从 cshtml 页面处理设计没有优势。必须从 .cs 文件中进行所有编码,修改非常困难。BUt 可以很好地控制生成报告的布局

那么任何人都可以建议一种具有两种选择的方法吗

  • 可以从cshtml本身做PDF设计。
  • 可以指定PDF页面的宽度和高度

由于报告并不总是在激光打印机上打印。还需要支持点阵打印,在这种情况下,我必须提及页面的宽度和高度。还有可能在信头上打印,所以我不得不再次提及空白区域的宽度和高度

或者任何人都可以建议一种方法来使用 RazorPDF 和 iTextSharp 方法提及 PDF 页面的宽度和高度

4

1 回答 1

2

您的问题与许多不同的工具有关,但如果您使用 iTextSharp,这就是答案。

当您使用 iTextSharp 从头开始​​创建 PDF 时,您总是需要一个Document和一个PdfWriter类。该类Document将用于高级功能;PdfWriter低级操作的类。

页面大小是在Document级别定义的。您可以像这样创建一个新Document对象:

Document document = new Document();

由于我们没有将任何参数传递给构造函数,iTextSharp 将使用默认页面大小 (A4) 和半英寸的边距创建 PDF。

这相当于:

Document document = new Document(PageSize.A4, 36, 36, 36, 36);

如您所见:我使用 36 作为半英寸的值,因为 1 英寸 = PDF 中的 72 个用户单位。

如果要定义另一个页面大小,可以使用PageSize类中可用的其他值之一来实现,例如:

Document document = new Document(PageSize.LETTER);

PageSize.A4PageSize.LETTERRectangle该类的实例,因此如果您需要未在 中定义的页面大小PageSize,则可以创建自己的矩形。例如:

Rectangle envelope = new Rectangle(432, 252);
Document document = new Document(envelope, 0, 0, 0, 0);

这些价值观从何而来?让我们做数学:

6 inch x 72 points = 432 points (the width)
3.5 inch x 252 points = 252 points (the height)

这就是您定义具有自定义大小的页面的方式。

于 2015-07-06T15:11:20.713 回答