使用System.Drawing.Printing.PrintDocument在内存中生成PDF

时间:2010-01-04 20:29:46

标签: c# asp.net pdf

有没有人知道以下是否可行,如果是,那么最好的方法是免费的?

我正在我正在处理的项目中生成PrintDocument并显示一个打印对话框,以便用户可以选择他们想要使用的打印机等。目前是一个Windows窗体应用程序,如果用户想要打印到他们可以选择打印到CutePDF或类似的PDF。

但是我现在在应用程序上放置一个ASP.Net Web前端,并希望使用相同的代码生成PrintDocument但是想要动态地将其打印到PDF并通过响应流以格式提供它PDF下载。

所以我的问题是......如何使用当前的PrintDocument并在内存中生成PDF?

由于

6 个答案:

答案 0 :(得分:2)

可以重复使用PrintDocument的System.Drawing代码来生成带有ABCpdf .NET的PDF文档。请参阅System.Drawing example...

答案 1 :(得分:0)

您必须使用第三方组件才能生成PDF。以下文章提供了一些此类组件的链接:Generating PDF Files from .Net

答案 2 :(得分:0)

如果您认为自己要运行与表单应用程序和ASP.NET应用程序中的打印机相同的“相同代码”,那么您将处于一个充满伤害的世界。

然而,您可能会很幸运,因为看起来PDFsharp + MigraDoc可能会为您做到这一点。

答案 3 :(得分:0)

我认为您会发现没有任何工具可以将PrintDocument作为输入并将PDF呈现为输出。执行所需操作的唯一方法是将PrintDocument“打印”到将生成PDF的“PDF打印机驱动程序”。基本上是一个虚拟打印机,它将生成PDF而不是打印实际输出。市场上有很多产品。一对便宜且广泛使用的夫妇如下:

答案 4 :(得分:0)

你真的应该关注iTextSharp(它在前面推荐的iText.NET页面上提到过)

http://itextsharp.sourceforge.net/

PrintDocument适用于Windows窗体应用程序,但已升级并进入SilverLight,请参阅此视频... http://silverlight.net/learn/videos/all/printing-api-basics/

如果您希望继续使用PrintDocument和Web应用程序,我认为SilverLight 4(现在是测试版)是唯一的方法,或者您必须在本地安装轻量级Windows窗体应用程序可能使用Web服务的最终用户。

iTextSharp是一个很棒的工具,可以在Internet上使用.NET生成PDF。我强烈推荐它;我已经将iText与Java一起使用了......过去几年一直在使用iTextSharp。

答案 5 :(得分:-1)

iText for .NET有几个端口(一个非常流行的Java开源PDF库)。

http://www.ujihara.jp/iTextdotNET/en/