从视图生成PDF

时间:2016-07-02 11:57:39

标签: asp.net asp.net-mvc pdf razor pdf-generation

我有一个mvc视图,我想使用我数据库中的数据将此视图存入PDF文件。我不会使用Rotativa。

我怎么能这样做?对此有一个简单的解决方案吗?

这是我显示发票详细信息的视图:

@model Webb.Models.Faktury

@{
    ViewBag.Title = "Faktura";
}

<h2>@ViewBag.Title.</h2>

<h4>Szczegóły.</h4>
<hr />

<div>
    <dl class="dl-horizontal">
        <dl class="dl-horizontal">
            <br>

            <table width='100%' cellspacing='0' cellpadding='2'>
                <tr><td class="topF" align='center' style='background-color: rgb(239, 239, 239);' colspan='4'>Faktura VAT<b></b></td></tr>
                <tr>
                    <td>
                        <br>
                        <p>Numer faktury </p><i class="fa fa-file-text-o" aria-hidden="true" title="Numer faktury" style="color: rgb(113, 165, 224);"></i>
                        <b>@Html.DisplayFor(model => model.FAK_Numer) </b>
                    </td>
                    <td>
                        <br>
                        <p>Data sprzedaży </p><i class="fa fa-calendar-plus-o" aria-hidden="true" title="Data sprzedaży" style="color: rgb(113, 165, 224);"></i>
                        <b>@Html.DisplayFor(model => model.FAK_DataS) </b>
                    </td>
                    <td>
                        <br>
                        <p>Termin zapłaty </p><i class="fa fa-calendar-times-o" aria-hidden="true" title="Termin zapłaty" style="color: rgb(113, 165, 224);"></i>
                        <b>@Html.DisplayFor(model => model.FAK_TerminZ) </b>
                    </td>
                </tr>
                <tr colspan='2'>
                    <td>
                        <br>
                        <p>Nabywca </p><i class="fa fa-user-plus" aria-hidden="true" title="Nabywca" style="color: rgb(113, 165, 224);"></i>
                        <b>@Html.DisplayFor(model => model.Klienci.KLI_Nazwa), ul. @Html.DisplayFor(model => model.Klienci.KLI_Ulica), @Html.DisplayFor(model => model.Klienci.KLI_KodP) @Html.DisplayFor(model => model.Klienci.KLI_Miasto)</b>
                    </td>
                    <td>
                        <br>
                        <p>Sprzedawca </p><i class="fa fa-male" aria-hidden="true" title="Sprzedawca" style="color: rgb(113, 165, 224);"></i>
                        <b>@Html.DisplayFor(model => model.Firma.FIR_Nazwa), ul. @Html.DisplayFor(model => model.Firma.FIR_Ulica), @Html.DisplayFor(model => model.Firma.FIR_KodP) @Html.DisplayFor(model => model.Firma.FIR_Miasto)</b>
                    </td>
                </tr>

                <td>
                    <br>
                    <p>Forma zapłaty </p><i class="fa fa-usd" aria-hidden="true" title="Forma zapłaty" style="color:#f26d41"></i>
                    <b>@Html.DisplayFor(model => model.FAK_FormaZ)</b>
                    @if (Model.FAK_FormaZ == "przelew")
                    {
                        <br><br>
                        <p>Rachunek </p><i class="fa fa-credit-card" aria-hidden="true" title="Rachunek" style="color: rgb(113, 165, 224);"></i>
                        <b>@Html.DisplayFor(model => model.Firma.FIR_Rachunek)</b>
                    }
                    <br>
                </td>

                    <td><br><br></td>
                <tr><td class="topF" align='center' colspan='4'><br></br></td></tr>

                <tr><td class="topF" align='left' colspan='4'>Wiersze:<b></b></td></tr>
                <td><br></td>
                <tr style="background-color: rgb(34, 117, 177);color:#ffffff">
                    <th>Nazwa</th>
                    <th>Jednostka</th>
                    <th>Cena brutto</th>
                    <th>Vat</th>
                </tr>
                @foreach (var item in Model.Wierszes)
                {
                    string selectedRow = "";
                    if (item.WIE_Pid == ViewBag.PRO_Id)
                    {
                        selectedRow = "success";
                    }
                    <tr class="@selectedRow">

                        <td>
                            @item.Produkty.PRO_Nazwa
                        </td>
                        <td>
                            @item.WIE_Ilosc @item.Produkty.PRO_Jednostka
                        </td>
                        <td>
                            @item.Produkty.PRO_CenaB @item.Produkty.PRO_Waluta
                        </td>
                        <td>
                            @item.Produkty.PRO_Vat %
                        </td>
                    </tr>
                }

                <td>
                    <br>
                    <p>Rabat </p><i class="fa fa-minus" aria-hidden="true" title="Rabat" style="color: rgb(113, 165, 224);"></i>
                    <b>@Html.DisplayFor(model => model.FAK_Rabat) %</b>
                </td>
                <tr style="background-color: rgb(34, 117, 177);color:#ffffff">
                    <th></th>
                    <th>Suma (brutto)</th>
                    <th>Suma (brutto po rabacie)</th>
                    <th>w tym Vat</th>
                </tr>
                    <td>

                    </td>
                    <td>
                        @Model.Wierszes.Sum(x => x.Produkty.PRO_CenaB * x.WIE_Ilosc) @Model.Wierszes.Min(x => x.Produkty.PRO_Waluta)

                    </td>
                    <td>
                        @Model.Wierszes.Sum(x => x.Produkty.PRO_CenaB * x.WIE_Ilosc - (x.Faktury.FAK_Rabat / 100 * (x.Produkty.PRO_CenaB * x.WIE_Ilosc))) @Model.Wierszes.Min(x => x.Produkty.PRO_Waluta)

                    </td>
                    <td>
                        @Model.Wierszes.Sum(x => (x.Produkty.PRO_CenaB * x.WIE_Ilosc) - (x.Produkty.PRO_CenaN * x.WIE_Ilosc)) @Model.Wierszes.Min(x => x.Produkty.PRO_Waluta)

                    </td>
                    <!--@Model.Wierszes.Sum(x=> x.Produkty.PRO_CenaB)-->





</table>




        </dl>
</div>
<p>
    @Html.ActionLink("Edit", "Edit", new { id = Model.FAK_Id }) |
    @Html.ActionLink("Back to List", "Index")
</p>

我如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以使用iTextSharp将HTML转换为PDF。您可能会遵循详细的tutorial CodeProject。它说明了如何使用iTextSharp将ASP.NET MVC视图作为PDF文件提供转换。