尝试按照 RazorPDF 的 this 教程进行操作,但我不知道为什么会收到以下错误消息:非常沮丧和疲倦。
错误信息:
无法加载文件或程序集“itextsharp”或其之一 依赖关系。找到的程序集的清单定义不 匹配装配参考。 (HRESULT 异常:0x80131040)
itextsharp:
运行时版本:v1.1.4322 版本:4.1.2.0
剃刀PDF:
运行时版本:4.0.30319
控制器内部:
public ActionResult Index()
{
var studentMarks = new List<MarksCard>()
{
new MarksCard()
{
RollNo = 101, Subject = "C#",
FullMarks = 100, Obtained = 90},new MarksCard() {RollNo = 101, Subject = "asp.net", FullMarks = 100, Obtained = 80},new MarksCard() {RollNo = 101, Subject = "MVC", FullMarks = 100,
Obtained = 100},new MarksCard() {RollNo = 101, Subject = "SQL Server", FullMarks = 100, Obtained = 75},
};
//// return new RazorPDF.PdfResult(studentMarks, "Index");
return View(studentMarks);
}
内部视图
@model IEnumerable<TimberBeamCalculator.Models.MarksCard>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.RollNo)
</th>
<th>
@Html.DisplayNameFor(model => model.Subject)
</th>
<th>
@Html.DisplayNameFor(model => model.FullMarks)
</th>
<th>
@Html.DisplayNameFor(model => model.Obtained)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.RollNo)
</td>
<td>
@Html.DisplayFor(modelItem => item.Subject)
</td>
<td>
@Html.DisplayFor(modelItem => item.FullMarks)
</td>
<td>
@Html.DisplayFor(modelItem => item.Obtained)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
</td>
</tr>
}
</table>
检查以确保 iTextSharp 确实进入了正确的位置。我猜你错过了一些东西。
我强烈建议您首先遵循初始项目示例并尝试让它们首先工作。
仅当您在 Visual Studio 中按 F5 进行调试时才会出现此问题。如果您不进行调试,请始终按 Ctrl+F5。该问题主要是由于项目文件中的某些配置设置错误造成的。要修复它:
从
dll
中删除 Add Reference
。获取
dll
的全新副本。添加此
dll
的参考。 这应该可以解决它。
我对 itextsharp 和 itextsharp.xmlworker dll 有问题,因此我从引用中删除了这两个 dll,并直接从 nuget 包下载了新的 dll,这解决了我的问题。
也许此方法对其他人解决问题很有用。
我在 Visual Studio 中进行 Web 开发时遇到了同样的错误。解决方案是从 Nuget Package Manager 安装 itextSharp
将引用路径添加到使用 itextsharp 或引用的 dll 的 .csproj
<Reference Include="iTextSharp, Version=4.1.6.0, Culture=neutral, PublicKeyToken=8354ae6d2174ddca">
<HintPath>..packages\iTextSharp-LGPL.4.1.6\lib\iTextSharp.dll</HintPath>
</Reference>
然后针对 iTextSharp 的最新 LGPL 源代码进行编译。这样您也可以更改正在使用的目标框架版本。
附注
RazorPdf
使用 iTextSharp 的 HTMLWorker
。它已被弃用并且不再受支持。它的 HTML 到 PDF 功能非常有限。他们最近已将其替换为 XMLWorker
: http://sourceforge.net/projects/itextsharp/files/xmlworker/