我正在尝试使用MVC生成PDF,我遇到的问题是我不知道如何在最后显示或使其工作,我正在使用ActionResult执行存储过程并填充一个带有结果的数据表,我后来“试着”在PDF生成器中使用,到目前为止一切顺利,问题是当我将结果发送到View时,我得到一个错误,不知道如何解决它,这是一种生活状况,所以如果你能帮助我,我会非常感激,抱歉我的英语不好。
的ActionResult:
public ActionResult PDFGenerator(string id
)
{
using (Document document = new Document())
{
string idpago = "2";
//while (id != null)
int identificacionpago = Convert.ToInt32(idpago);
DataTable dt = new DataTable();
Database conex = Conexion.getInstancia();
dt = conex.ExecuteDataSet("Usp_TraerPago", identificacionpago).Tables[0];
string pago = dt.Rows[0]["ValorPago"].ToString();
string aniopago = dt.Rows[0]["AnioPago"].ToString();
DateTime fechapago = Convert.ToDateTime(dt.Rows[0]["FechaPago"]);
//int pag = Convert.ToInt32(ViewBag.datos);
int idusuario = Convert.ToInt32(dt.Rows[0]["IdUsuario"].ToString());
DataTable dt1 = new DataTable();
dt1 = conex.ExecuteDataSet("Usp_UsuarioPago", idusuario).Tables[0];
string Numid = dt1.Rows[0]["NumIdentificacion"].ToString();
string Tipoid = dt1.Rows[0]["TipoIdentificacion"].ToString();
string Nombre = dt1.Rows[0]["NombresUsuario"].ToString();
string apellidos = dt1.Rows[0]["ApellidosUsuario"].ToString();
MemoryStream workStream = new MemoryStream();
// Document document = new Document();
PdfWriter.GetInstance(document, workStream).CloseStream = false;
document.Open();
document.Add(new Paragraph(" " + DateTime.Now.ToString()));
document.Add(new Paragraph("Certificado de participación"));
document.Add(new Paragraph(" "));
document.Add(new Paragraph(" "));
document.Add(new Paragraph(" por el año " + aniopago));
document.Add(new Paragraph("El suscrito a " + Nombre + " " + apellidos + " identificado con " + Tipoid + " " + Numid + " " + " En la fecha " + fechapago.Year + "/" + fechapago.Month + "/" + fechapago.Day + aniopago));
document.Add(new Paragraph(" "));
document.Add(new Paragraph(" "));
document.Add(new Paragraph(" "));
document.Add(new Paragraph(" "));
document.Add(new Paragraph(" "));
document.Add(new Paragraph(" "));
document.Add(new Paragraph(" "));
document.Add(new Paragraph(" "));
document.Add(new Paragraph("___________________________ "));
document.Add(new Paragraph("Firma del Revisor Fiscal "));
//document.SaveAs(workStream);
document.Close();
byte[] byteInfo = workStream.ToArray();
workStream.Write(byteInfo, 0, byteInfo.Length);
workStream.Position = 0;
return File(workStream, "application/pdf");
}
}
部分视图:
function generarpdf(value) {
$.ajax({
url: '@Url.Action("PDFGenerator", "Home")',
type: 'POST',
async: false,
data: { "id": value },
dataType: "application/pdf",
success: function (data) {
var file = new Blob([data], { type: 'application/pdf' });
var fileURL = URL.createObjectURL(file);
window.open(fileURL);
}
});
};
由此URL操作调用。
<a id="libro" href='@Url.Action("PDFGenerator","Home")'></a>
当我执行它时,控制台显示以下错误:
jquery-3.2.1.min.js:4 [弃用]主线程上的同步XMLHttpRequest因其对最终用户体验的不利影响而被弃用。如需更多帮助,请查看https://xhr.spec.whatwg.org/。
答案 0 :(得分:0)
我最后这样做了:
<a href='Home/PDFGenerator/'+ id+' "><img src="/Content/ImagesOwner/if_pdf_3745.png"/></a>
其中id是我需要发送到HomeController中的ActionResult的参数。我想最后这是非常愚蠢的。