Asp.net mvc 要在MVC Web应用程序中打印的PDF或文档
在我的MVC应用程序中,当涉及到打印报告时,我几乎没有选择 RazorPDF-从cshtml本身处理设计的优势&可以作为模型从控制器传递值 iTextSharp—从cshtml本身处理设计的优势&可以作为模型从控制器传递值 pdfSharp-从cshtml页面处理设计没有任何优势。必须从.cs文件进行所有编码&修改非常困难。但是对生成的报告的布局有很大的控制 那么,有谁能提出一种同时兼顾两种选择的方法呢Asp.net mvc 要在MVC Web应用程序中打印的PDF或文档,asp.net-mvc,pdf,itextsharp,pdfsharp,razorpdf,Asp.net Mvc,Pdf,Itextsharp,Pdfsharp,Razorpdf,在我的MVC应用程序中,当涉及到打印报告时,我几乎没有选择 RazorPDF-从cshtml本身处理设计的优势&可以作为模型从控制器传递值 iTextSharp—从cshtml本身处理设计的优势&可以作为模型从控制器传递值 pdfSharp-从cshtml页面处理设计没有任何优势。必须从.cs文件进行所有编码&修改非常困难。但是对生成的报告的布局有很大的控制 那么,有谁能提出一种同时兼顾两种选择的方法呢 可以从cshtml本身进行PDF设计 可以指定PDF页面的宽度和高度 因为报告并非总是在
- 可以从cshtml本身进行PDF设计
- 可以指定PDF页面的宽度和高度
或者,任何人都可以建议一种方法,使用RazorPDF和iTextSharp方法提及PDF页面的宽度和高度您的问题涉及许多不同的工具,但如果您正在使用iTextSharp,这就是答案 使用iTextSharp从头开始创建PDF时,始终需要
文档
和PdfWriter
类。文档
类用于高级功能;用于低级操作的PdfWriter
类
页面大小在文档
级别定义。您可以创建一个新的文档对象,如下所示:
Document document = new Document();
由于我们没有向构造函数传递任何参数,iTextSharp将使用默认页面大小(A4)和半英寸的边距创建PDF
这相当于:
Document document = new Document(PageSize.A4, 36, 36, 36, 36);
如您所见:我使用36作为半英寸的值,因为在PDF中1英寸=72个用户单位
如果要定义另一个页面大小,可以使用PageSize
类中可用的其他值之一,例如:
Document document = new Document(PageSize.LETTER);
Rectangle envelope = new Rectangle(432, 252);
Document document = new Document(envelope, 0, 0, 0, 0);
PageSize.A4
和PageSize.LETTER
是Rectangle
类的实例,因此如果您需要未在PageSize
中定义的页面大小,则可以创建自己的矩形。例如:
Document document = new Document(PageSize.LETTER);
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)
这就是使用自定义大小定义页面的方式。我不太明白。PDF文档中的页面大小独立于用于打印PDF的任何打印机。您是否总是希望(事实上,必须)指定PDF包含的页面大小?你不能有一个未知大小的页面,毕竟…页面大小意味着PDF页面的宽度和高度。或者在不提及页面大小的情况下,报告如何适合尺寸小于A4的页面。PDF中的页面大小在/MediaBox
条目中定义。这是必需的元素。没有/MediaBox
值的PDF不是PDF。我不明白你的问题。你能澄清一下吗?使用iTextSharp创建文档
实例时,可以传递页面大小。如果未提供页面大小,则默认为PageSize.A4
。这是你的问题吗?您正在寻找接受页面大小的文档
构造函数吗?在点阵打印机中打印PDF时要小心,打印机驱动程序会将PDF转换为图像并发送到打印机。打印会花费很长时间,而且质量会很差。@BrunoLowagie是的,我正在尝试一个解决方案,在这个解决方案中,我可以定义页面大小。可以从Razor视图引擎本身进行定义。请参阅注释以获取pastebin样本。我不知道Razor。我只知道它使用了一个过时的iText版本。看看你的pastebin样品。我是来自Lowagie,com的Lowagie。你给我看的是我在2003年6月26日写的一个例子。那是12年前的事了。Razor使用的iText版本不再受支持。我不推荐使用它。