C# で Asp.net MVC 5 を使用するのは初めてです。
1 つのビューから 1 つの PDF を作成しようとしていますが、管理していません。数日間自分で試してみた後、いくつかのフォーラムで読み始めましたが、その方法が見つかりませんでした (または理解していなかったかもしれません)。
NuGet、RazorPDF、RazorPDF2、および MVC 用の RazorPDF からインストールしました。iTextSharp 5.0.5.0 を使用してから、5.5.8.0 に更新しました。しかし、いずれにせよ、それはうまくいきました。
さまざまなエラーがありました。最初はこれでした:
RazorPDF.Legacy.Text.DocumentException: Helvetica がリソースとして見つかりません
その後:
タイプ 'iTextSharp.text.html.HtmlParser' をアセンブリ 'itextsharp、Version=5.5.8.0、Culture=neutral、PublicKeyToken=8354ae6d2174ddca' から読み込めませんでした
ここで、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 の別のツールを使用する必要がありますか? 私のコードが間違っているのか、それとも私が作成したものの「唯一の」問題は、「2 年半更新されていないことです。iTextSharp の古いバージョンが必要で、古い HTML パーサーを使用しています。」クリスが言ったように?