0

我是在 C# 中使用 Asp.net MVC 5 的新手。

我正在尝试从一个视图创建一个 PDF,但我没有管理。经过几天自己的尝试,然后我开始在一些论坛上阅读,但我没有找到(或者我不明白)如何去做。

我安装了 NuGet、RazorPDF、RazorPDF2 以及适用于 MVC 的 RazorPDF。我使用了 iTextSharp 5.0.5.0,然后更新到 5.5.8.0。但无论如何,它奏效了。

我有不同的错误。首先是这个:

RazorPDF.Legacy.Text.DocumentException:找不到 Helvetica 作为资源

接着:

无法从程序集“itextsharp,版本=5.5.8.0,文化=中性,PublicKeyToken=8354ae6d2174ddca”加载类型“iTextSharp.text.html.HtmlParser”

我在这里读到了 Chris Hass 写的一篇精彩的文章。但我不知道如何应用它。所以我的问题是,如何让它在我的精确情况下工作?

这就是我的控制器中的内容:

public ActionResult Factura(int? id)
{
    if (id == null)
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
    }
    Venta venta = db.Ventas.Find(id);
    if (venta == null)
    {
        return HttpNotFound();
    }

    var detalleVenta = from c in db.DetalleVentas where c.VentaID ==   venta.VentaID select c;

    return new RazorPDF.PdfResult(detalleVenta,"Factura");
}

这是我的观点:

@model IEnumerable<MiContexto.Models.DetalleVenta>

<table class="table">
    <tr>
    <th>
        @Html.DisplayNameFor(model => model.NombreProducto)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Cantidad)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Descuento)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.PrecioSinIva)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Iva)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Precio)
    </th>
</tr>
@foreach (var item in Model) {

<tr>
    <td>
        @Html.DisplayFor(modelItem => item.NombreProducto)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Cantidad)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Descuento)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.PrecioSinIva)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Iva)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Precio)
    </td>

</tr>

}

</table>

那么我应该怎么做才能从这个视图创建 pdf 呢?我是否必须使用“RazorPDF”或“RazorPDF for MVC”或 NuGet 中的其他工具?我的代码是错误的还是我所做的“唯一”问题是“它已经两年半没有更新了,它需要一个过时的 iTextSharp 版本并使用过时的 HTML 解析器。” 正如克里斯所说的那样?

4

0 回答 0