我正在使用MVC3和iTextSharp。
首先添加了一个Save和CreatePDF按钮。使用PDF Button我调用一个Method,它返回显示的WebPage的实际HTML代码。
到目前为止一切顺利,现在我开始使用iTextSharp生成PDF。我想知道,它在第一次尝试时起作用,但在我添加MVC网格表到iTextSharp仍然创建PDF,但其中包含错误消息。
不支持ERRORURI-Formate。
有什么建议可以让它发挥作用吗?
Grid就像那样构建
@Html.DataGridFor(m => m.ConfigurationArticleList, ItemContainerType.tr,
_S.H<ConfigurationArticle>(
@<text>
<td class="ToDo">
@item.ValidationMessageFor(m => m.ArtNr, "*")
@item.TextBoxFor(m => m.ArtNr)
</td>
<td class="ToDo">
@item.ValidationMessageFor(m => m.Bezeichnung, "*")
@item.TextBoxFor(m => m.Bezeichnung)
</td>
<td class="ToDo">
@item.ValidationMessageFor(m => m.Anzahl, "*")
@item.TextBoxFor(m => m.Anzahl)
</td>
</text>
),
_S.H<ConfigurationArticle>(
@<text>
<td class="ToDo">
@item.ValidationMessageFor(m => m.ArtNr, "*")
@item.DisplayField(m => m.ArtNr)
</td>
<td class="editor-field">
@item.ValidationMessageFor(m => m.Bezeichnung, "*")
@item.DisplayField(m => m.Bezeichnung)
</td>
<td class="ToDo">
@item.ValidationMessageFor(m => m.Anzahl, "*")
@item.DisplayField(m => m.Anzahl)
</td>
</text>
此外,PDF的FilePath仍然是硬编码的,任何想法都可以获得SaveFile-Dialog或其他东西吗?
答案 0 :(得分:2)
ABCpdf - 是一个更好的工具。我们确实喜欢它在我们的项目中,它没有问题。 ABCpdf
答案 1 :(得分:0)
我建议您使用wkhtmltopdf代替ITextSharp。它是一个使用Web工具包渲染引擎的开源可执行文件。它产生非常好的pdf输出。如果您想在mvc网站上使用它,那么您可以使用以下代码运行它:
var procStartInfo = new ProcessStartInfo("wkhtmltopdf.exe", "input.html output.pdf");
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
procStartInfo.CreateNoWindow = true;
Process proc = new Process();
proc.StartInfo = procStartInfo;
proc.Start();
它将在服务器的文件系统上创建输出,但您可以轻松读取并写入http响应。
Response.ContentType = "Application/pdf";
Response.AddHeader("Content-Type", "application/pdf");
Response.AddHeader("Content-Disposition", "attachment; filename=output.pdf");
string filePath = "output.pdf";
Response.WriteFile(filePath);
Response.End();