【问题标题】:PDF OR Document To Print in MVC Web application在 MVC Web 应用程序中打印 PDF 或文档
【发布时间】:2015-07-06 10:21:07
【问题描述】:

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

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

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

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

那么任何人都可以提出两种选择的方法

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

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

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

【问题讨论】:

  • 我不太明白。 PDF 文档中的页面大小与用于打印 PDF 的任何打印机无关。您是否总是想要(事实上,必须)指定您的 PDF 包含的页面大小?毕竟,你不能有一个未知大小的页面......
  • 页面大小是指 PDF 页面的宽度和高度。或者不提及页面大小报告将如何适合尺寸小于 A4 的页面
  • PDF 中的页面大小在/MediaBox 条目中定义。这是必需的元素。没有 /MediaBox 值的 PDF 不是 PDF。我不明白你的问题。你能澄清一下吗?当您使用 iTextSharp 创建Document 实例时,您可以传递页面大小。如果没有提供页面大小,则默认采用PageSize.A4。那是你的问题吗?您是否正在寻找接受页面大小的 Document 构造函数?
  • 在点阵打印机中打印 PDF 时要小心,打印机驱动程序会将 PDF 转换为图像并将其发送到打印机。打印需要很长时间,而且质量很差。
  • @BrunoLowagie 是的,我正在尝试一种可以定义页面大小的解决方案

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


【解决方案1】:

您的问题涉及许多不同的工具,但如果您使用的是 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)

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

【讨论】:

  • 是否有可能从 Razor 视图引擎本身执行此操作。请参阅评论以获取 pastebin 示例
  • 我不知道 Razor。我只知道它使用了一个过时的 iText 版本。看看你的 pastebin 样本。我是来自lowagie,com 的Lowagie。你给我看一个我在 2003 年 6 月 26 日写的例子。那是 12 年前。不再支持 Razor 使用的 iText 版本。我不建议使用它。
猜你喜欢
  • 1970-01-01
  • 2013-07-06
  • 2010-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-29
  • 1970-01-01
相关资源
最近更新 更多