在我的MVC应用程序中,当涉及到打印报告时我几乎没有选择
RazorPDF - 从cshtml本身处理设计的优点&可以从控制器传递值作为模型
iTextSharp - 从cshtml本身处理设计的优点&可以从控制器传递值作为模型
pdfSharp - 没有从cshtml页面处理设计的优势。必须从.cs文件&进行所有编码。修改非常困难。 BUt可以很好地控制生成的报告的布局
所以任何人都可以建议一个带有两个选项的方法
由于报告并不总是在激光打印机上打印。需要为dotmatrix打印提供支持,在这种情况下我必须提到宽度和宽度。页面的高度。也有可能在字母头上打印,所以我不得不再次提到空白区域的高度和高度
或者任何人都可以建议用RazorPDF和iTextSharp方法提及PDF页面的宽度和高度
答案 0 :(得分: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.A4
和PageSize.LETTER
是Rectangle
类的实例,因此如果您需要的页面大小未在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)
这是您使用自定义尺寸定义网页的方法。