Luego de mucho trabajar hemos hallado el resultado de este contratiempo que tantos lectores de este sitio web tienen. Si deseas aportar algún detalle puedes dejar tu conocimiento.
Solución:
No puede llamar al código del lado del cliente (función Javascript) desde el código del servidor (C#). Solo puede comunicarse a través del protocolo (HTTP/HTTPs).
Creo que necesita generar el PDF desde el cliente y luego enviar ese PDF al servidor para que pueda adjuntar el PDF a un correo electrónico.
En ese caso, primero debe generar el PDF y enviarlo al servidor como base64 string.
A continuación, puede convertir el base64 string a PDF en C# y envíelo por correo como archivo adjunto.
Lado del cliente:
function generatePdf()
var doc = new jsPdf();
doc.text("jsPDF to Mail", 40, 30);
var binary = doc.output();
return binary ? btoa(binary) : "";
Publicando el base64 contenido pdf al servidor:
var reqData = generatePdf();
$.ajax(
url:url,
data: JSON.stringify(data:reqData),
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
success:function()
);
En el servidor (controlador MVC):
public ActionResult YourMethod(string data)
//create pdf
var pdfBinary = Convert.FromBase64String(data);
var dir = Server.MapPath("~/DataDump");
if (!Directory.Exists(dir))
Directory.CreateDirectory(dir);
var fileName = dir + "\PDFnMail-" + DateTime.Now.ToString("yyyyMMdd-HHMMss") + ".pdf";
// write content to the pdf
using (var fs = new FileStream(fileName, FileMode.Create))
using (var writer = new BinaryWriter(fs))
writer.Write(pdfBinary, 0, pdfBinary.Length);
writer.Close();
//Mail the pdf and delete it
// .... call mail method here
return null;
Consulte aquí para obtener más información https://github.com/Purush0th/PDFnMail
Nos encantaría que puedieras difundir este ensayo si lograste el éxito.