要在MVC Web应用程序中打印的PDF或文档

时间:2015-07-06 10:21:07

标签: asp.net-mvc pdf itextsharp pdfsharp razorpdf

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

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

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

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

所以任何人都可以建议一个带有两个选项的方法

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

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

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

1 个答案:

答案 0 :(得分:2)

您的问题是关于许多不同的工具,但这是您使用iTextSharp时的答案。

使用iTextSharp从头开始创建PDF时,您始终需要DocumentPdfWriter类。 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)

这是您使用自定义尺寸定义网页的方法。