4

mvc .net WebアプリケーションでWebグリッドを.pdfファイルにエクスポートするにはどうすればよいですか?

4

2 に答える 2

1

これを行うには、いくつかの方法があります。

  • 前の回答で述べたように、RazorPDFを使用できます。
  • Rotativaを使用できます。これは非常に高速に動作しますが、実行可能ファイルで PDF 変換が行われるため、完全な信頼でサーバーを実行する権限が必要です。
  • 実装が最も困難/面倒なiTextSharpを使用できますが、同時に、必要に応じて PDF ドキュメントを作成する柔軟性があります。

それが役立つことを願っています-

于 2013-06-24T17:15:44.860 に答える
0

完全なリファレンスについては 、MVC4 アプリケーションで Webgrid を PDF にエクスポートする方法に従ってください。

ビュー ページへのアクション リンクを作成する

<div>
     Export Data : @Html.ActionLink("Export to PDF","GETPdf","Webgrid")
</div>

次に、webgrid データを pdf ファイルにエクスポートするための MVC アクションを作成します。ここで iTextSharp.dll は、pdf ファイルのエクスポートに使用されます。

public FileStreamResult GETPdf()
    {
        List<CustomerInfo> all = new List<CustomerInfo>();
        using (MyDatabaseEntities dc = new MyDatabaseEntities())
        {
            all = dc.CustomerInfoes.ToList();
        }

        WebGrid grid = new WebGrid(source: all, canPage: false, canSort: false);
        string gridHtml = grid.GetHtml(
                columns: grid.Columns(
                        grid.Column("CustomerID", "Customer ID"),
                        grid.Column("CustomerName", "Customer Name"),
                        grid.Column("Address", "Address"),
                        grid.Column("City", "City"),
                        grid.Column("PostalCode", "Postal Code")
                    )
                ).ToString();

        string exportData = String.Format("<html><head>{0}</head><body>{1}</body></html>", "<style>table{ border-spacing: 10px; border-collapse: separate; }</style>", gridHtml);
        var bytes = System.Text.Encoding.UTF8.GetBytes(exportData);
        using (var input = new MemoryStream(bytes))
        {
            var output = new MemoryStream();
            var document = new iTextSharp.text.Document(PageSize.A4, 50, 50, 50, 50);
            var writer = PdfWriter.GetInstance(document, output);
            writer.CloseStream = false;
            document.Open();

            var xmlWorker = iTextSharp.tool.xml.XMLWorkerHelper.GetInstance();
            xmlWorker.ParseXHtml(writer, document, input, System.Text.Encoding.UTF8);
            document.Close();
            output.Position = 0;
            return new FileStreamResult(output, "application/pdf");
        }
于 2015-11-30T16:16:23.367 に答える