我是在 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 解析器。” 正如克里斯所说的那样?