从asp.net生成PDF文件mvc
我想从我的asp.net mvc应用程序打印收据。现在我认为我最好的选择是创建PDF文件,这些文件在打印时很容易处理,因为页边/页眉/页脚等等。从asp.net生成PDF文件mvc
我不希望让他们配置他们的浏览器,以便他们可以打印我的收据,其中一些并不那么聪明。
还有其他的选择吗?
什么是最好的(免费)库/ API从一个asp.net MVC应用程序
我有很好的成功使用Report.net以及iTextSharp PDF格式创建条形码标签生成的PDF文件。特别是iTextSharp,这个API看起来很简单,它在我们的ASP.NET MVC应用程序中运行良好。对iTextSharp没有太多的文档,所以你必须查看iText的java文档(它是一个端口)。
奖励:他们都是免费的!
4.7版本后的iTextSharp发布不是免费的,如果你是使用它们商业。许可证已更改。 – 2013-10-08 13:49:42
你是如何得到Report.net与MVC合作的?我很努力地理解如何让ViewPDF或ResponsePDF输出转换为ActionResult。 – 2013-10-08 14:41:46
以上关于使用Report.NET与MVC进行评论。查看我的答案,查看示例代码。 – 2013-10-08 16:05:26
我会使用iTextSharp如果您正在寻找生成PDF打印,但至于其他选项去,为什么不只是使用CSS风格打印机友好的页面选项?
因为我无法控制浏览器放在页面的页脚和页眉上,如URL和其他东西... – hminaya 2009-11-19 13:10:25
如果您正在使用MVC 4,检查了这一点:http://www.nyveldt.com/blog/post/Introducing-RazorPDF
这使用下面的iTextSharp的.NET端口。如果您打算将此许可用于商业目的,请检查许可证。 – 2013-10-05 08:25:14
使用Report.NET代码返回在MVC动作他们的Hello World例子:
public void MyPDFAction()
{
Root.Reports.Report report = new Root.Reports.Report(new PdfFormatter());
FontDef fd = new FontDef(report, "Helvetica");
FontProp fp = new FontPropMM(fd, 25);
Page page = new Page(report);
page.AddCB_MM(80, new RepString(fp, "Hello World!"));
RT.ViewPDF(report, "HelloWorld.pdf");
}
动作的返回类型为无效,因为Report.NET代码直接更新响应,默认情况下返回的响应为无效操作。这直接从浏览器打开一个pdf查看器。
获得响应返回一个页面,而不是下载替换
RT.ResponsePDF(report, System.Web.HttpContext.Current.Response);
但是这种方法被标记的RT.ViewPDF线有利于与System.Web.UI程序交易的一个弃用。页。不幸的是,我不知道如何处理MVC应用程序中的页面对象。
我一直无法让Report.NET启动PDF文件的下载。
下载报告.NET here。
编辑我最近发现了PDFSharp,它似乎比Report.NET更近的维护。它也可以在MIT许可下获得。您可以从here下载。还有一个广泛的wiki有很多例子。
Basic代码返回一个文件,如MVC下载:
[HttpGet]
public ActionResult MyPdfAction()
{
using (MemoryStream stream = new MemoryStream())
{
PdfDocument document = new PdfDocument();
PdfPage page = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);
XFont font = new XFont("Verdana", 20, XFontStyle.Bold);
gfx.DrawString("Hello, World!", font, XBrushes.Black, new XRect(0, 0, page.Width, page.Height), XStringFormats.Center);
document.Save(stream, false);
return File(stream.ToArray(), "application/pdf", "HelloWorld.pdf");
}
}
另一个编辑如果你在生产具有表主要是基于文本的文件有趣的,这是值得检查MigraDoc,因为它提供一个位于PDFSharp基元顶部的有用抽象层。 MigraDoc包含在PDFSharp下载中。您需要将PDFSharp,PDFSharp.Charting,MigraDoc.DocumentObjectModel和MigraDoc.Rendering项目添加到您的项目中才能使其工作。
代码生成PDF在这里下载:
[HttpGet]
public ActionResult MyPdfAction()
{
using (MemoryStream stream = new MemoryStream())
{
Document document = CreateDocument();
document.UseCmykColor = true;
const bool unicode = false;
const PdfFontEmbedding embedding = PdfFontEmbedding.Always;
PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer(unicode, embedding);
pdfRenderer.Document = document;
pdfRenderer.RenderDocument();
pdfRenderer.PdfDocument.Save(stream, false);
return File(stream.ToArray(), "application/pdf", "HelloWorld.pdf");
}
}
/// <summary>
/// Creates an absolutely minimalistic document.
/// </summary>
static Document CreateDocument()
{
Document document = new Document();
Section section = document.AddSection();
Paragraph paragraph = section.AddParagraph();
paragraph.Format.Font.Color = Color.FromCmyk(100, 30, 20, 50);
paragraph.AddFormattedText("Hello, World!", TextFormat.Bold);
return document;
}
摘要说完看了一些PDF解决方案,为C#MVC,我使用PDFSharp/MigraDoc。我已经打折了iTextSharp和基于它的项目,因为如果您在商业上使用它(如果是我的情况,则为2500欧元),因为许可费用昂贵。 Report.NET是在ASP.NET经典的基础上开发的,自2006年以来一直未收到更新。
重复:http://*.com/questions/779430/asp-net-mvc-how-to-get -view-to-generate-pdf – 2009-11-19 02:30:44
我可能不想在View上生成PDF,所以它不是同一个问题。 – hminaya 2009-11-19 02:37:49
@hminaya:那么它是一个http://*.com/questions/1244109/generating-pdf-file-in-net – 2009-11-19 04:37:48