Bir PDF oluşturup ekrana göstermesi veya kullanıcının erişebileceği bir yere kaydetmesi gereken bir ASP.Net MVC uygulaması yapıyoruz. Belgeyi oluşturmak için PdfSharp kullanıyoruz. Tamamlandığında, kullanıcının belgeyi kaydetmesine veya bir okuyucuda açmasına nasıl izin veririz? Özellikle sunucu tarafında üretildiğinden, ancak istemci tarafında görünmesini istediğimiz için kafam karıştı. Ben diyor documentRenderer.PdfDocument.Save(filename);
, Access to the path 'C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\10.0\report.pdf' is denied.
bir UnauthorizedAccessException
Ben de emin değilim olsun bu çalıştırırASP.Net MVC'de PdfSharp kullanarak nasıl PDF görüntüleyebilirim?
public class ReportController : ApiController
{
private static readonly string filename = "report.pdf";
[HttpGet]
public void GenerateReport()
{
ReportPdfInput input = new ReportPdfInput()
{
//Empty for now
};
var manager = new ReportPdfManagerFactory().GetReportPdfManager();
var documentRenderer = manager.GenerateReport(input);
documentRenderer.PdfDocument.Save(filename); //Returns a PdfDocumentRenderer
Process.Start(filename);
}
}
: Burada
şu ana kadar yazdım rapor oluşturmak için MVC denetleyicisi olan
Process.Start(filename);
satırı çalıştırıldığında ne olur.
Bu
manager.GenerateReport(input)
yılında kodudur:
public class ReportPdfManager : IReportPdfManager
{
public PdfDocumentRenderer GenerateReport(ReportPdfInput input)
{
var document = CreateDocument(input);
var renderer = new PdfDocumentRenderer(true, PdfSharp.Pdf.PdfFontEmbedding.Always);
renderer.Document = document;
renderer.RenderDocument();
return renderer;
}
private Document CreateDocument(ReportPdfInput input)
{
//Put content into the document
}
}
yoktur Bu bayt dizisi almak ve MVC olmadan kullanıcıya döndürmek nasıl gösterir. MVC ile sadece bayt dizisini (bellek akışından, herhangi bir dosyaya gerek duymadan) almak için koda ihtiyacınız vardır. Örnek: http://www.pdfsharp.net/wiki/Clock-sample.ashx –
Yeni kullanıcılar için biraz kafa karıştırıcı olur, bu yüzden (NickAlbrecht) yanıtı @PDFsharpTeam gibi bir şey yapmak için güncellemeyi zahmetli yaparsınız. yardımcı link [** MemoryStream akışı = yeni MemoryStream(); //// document.Save (akış, yanlış); //// Bayt [] documentBytes = stream.ToArray(); //// Return File (documentBytes, "application/pdf"); **] (Bu bana çok yardımcı oldu. Teşekkür ederim!) –