Report.NET mit dem Code ihrer Hallo Welt Beispiel in einer MVC-Aktion zurückkehren wird:
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");
}
Der Rückgabetyp der Aktion ist void, da der Report.NET-Code die Antwort direkt aktualisiert, die standardmäßig für ungültige Aktionen zurückgegeben wird. Dies öffnet einen PDF-Viewer direkt aus dem Browser.
die Antwort erhalten zurück eher als eine Seite als Download mit
RT.ResponsePDF(report, System.Web.HttpContext.Current.Response);
jedoch diese Methode markiert die RT.ViewPDF Linie ersetzen zugunsten des einen veraltet, die mit System.Web.UI beschäftigt .Seite. Leider weiß ich nicht, wie ich mit einem Page-Objekt im Kontext einer MVC-App umgehen soll.
Ich konnte Report.NET den Download einer PDF-Datei nicht initiieren.
Download Bericht.NET here.
Bearbeiten Ich habe vor kurzem PDFSharp entdeckt, die in jüngerer Zeit als Report.NET gepflegt scheint. Es ist auch unter der MIT-Lizenz verfügbar. Sie können von here herunterladen. Es gibt auch eine umfangreiche wiki mit vielen Beispielen.
Basic-Code eine Datei als Download in MVC zurück:
[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");
}
}
Another bearbeiten Wenn Sie weitgehend interessant sind textbasierte Dokumente mit Tabellen in der Herstellung, es lohnt sich ist MigraDoc Check-out, wie es bietet eine nützliche Abstraktionsschicht über den PDFSharp-Primitiven. MigraDoc ist im PDFSharp Download enthalten. Sie müssen die Projekte PDFSharp, PDFSharp.Charting, MigraDoc.DocumentObjectModel und MigraDoc.Rendering Ihrem Projekt hinzufügen, damit alles funktioniert.
-Code ein PDF zum Download generieren hier:
[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;
}
Zusammenfassung Nachdem für C# MVC in einer Reihe von PDF-Lösungen gesucht, ich bin PDFSharp/MigraDoc verwenden. Ich habe iTextSharp und darauf basierende Projekte aufgrund der teuren Lizenzkosten, die Sie kommerziell nutzen (in meinem Fall 2500 €), nicht berücksichtigt. Report.NET wurde mit ASP.NET klassisch im Verstand entwickelt und hat kein Update seit 2006
Duplikat erhalten: http://stackoverflow.com/questions/779430/asp-net-mvc-how-to-get -view-to-generate-pdf –
Ich möchte vielleicht nicht die PDF in einer Ansicht erstellen, also ist es nicht die gleiche Frage. – hminaya
@hminaya: dann ist es ein Duplikat http://stackoverflow.com/questions/1244109/generating-pdf-file-in-net –