私たちは、PDFを生成して画面に表示したり、どこかに簡単にアクセスしてアクセスできるようにするASP.Net MVCアプリケーションを作成しています。私たちはPdfSharpを使って文書を生成しています。それが終わったら、ユーザーに文書を保存させたり、読者に開く方法を教えてください。 PDFはサーバーサイドで生成されるため、私は特に混乱していますが、クライアントサイドに表示する必要があります。ここでASP.Net MVCでPdfSharpを使用してPDFを表示するにはどうすればよいですか?
我々はこれまでに書いたレポートを作成するには、MVCコントローラです:
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);
}
}
これを実行すると、私はdocumentRenderer.PdfDocument.Save(filename);
でUnauthorizedAccessException
を得ると言うこと、Access to the path 'C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\10.0\report.pdf' is denied.
私もわからないんだけど行Process.Start(filename);
が実行されるとどうなりますか?
これはmanager.GenerateReport(input)
のコードです:
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
}
}
ありバイト配列を取得してMVCなしでユーザーに返す方法を示しています。 MVCを使用すると、バイト配列を取得するためのコードが必要になります(メモリストリームからファイルは必要ありません)。サンプル:http://www.pdfsharp.net/wiki/Clock-sample.ashx –
新しいユーザーの場合、少し混乱してしまうので、あなたは(NickAlbrecht)@ PDFsharpTeamのような正確なことを行うために答えを更新するのは難しいでしょうヘルパーリンク。 [** MemoryStream stream =新しいMemoryStream(); //// document.Save(stream、false); //// Byte [] documentBytes = stream.ToArray(); //// return file(documentBytes、 "application/pdf"); **](これは大変助けになりました。ありがとう!!!) –