У меня во время выполнения есть скрипт, выполняющий Ajax запрос к контроллеру для генерации PDF-файла и отправки в ответ. Когда PDF-файл отправляется обратно в ответ BLOB, и я хочу просто напечатать сразу, и появится диалоговое окно принтера.
Я нашел различные способы печати pdf с использованием C#, такие как печать с использованием pdfAcrobat с указанием локального пути или программная печать PDF с указанием имен принтеров et c для отправки на печать в фоновом режиме.
Однако, то, что я хочу, - это диалоговое окно печати, которое появляется, когда ответ PDF возвращается как блоб из контроллера и отправляется на печать через диалоговое окно печати. Я НЕ ХОЧУ СОХРАНИТЬ PDF.
Это мой AJAX код скрипта внутри CS HTML для получения PDF-файла с контроллера:
$(".btnPrint").click(function (e) {
finalComponentArray = { 'Ceiling': componentArrayCeiling, 'BackPanel': componentArrayBackPanel, 'CarDoor': componentArrayCarDoor, 'FrontPanel': componentArrayFrontPanel, 'COB': componentArrayCOB, 'HOB': componentArrayHOB, 'LeftPanel': componentArrayLeftPanel, 'Handrail': componentArrayHandrail, 'RightPanel': componentArrayRightPanel, 'Mirror': componentArrayMirror };
var finalJson = JSON.stringify(finalComponentArray);
var empId = @ViewBag.EmpId;
console.log(finalJson);
$.ajax({
url: '@Url.Action("LiftCustomizePrint", "Lift")',
method: "post",
dataType:"json",
data: { componentJson: finalJson, empId: empId },
xhrFields: {
responseType: 'blob'
},
success: function (data) {
var blob = new Blob(data, { type: 'application/pdf' });
***//how to open up print dialog from here with the blob data ?***
},
error: function () { alert('error') }
});
});
Это мой частичный код функции от контроллера:
[HttpPost]
public virtual ActionResult LiftCustomizePrint(string componentJson, string empId)
{
int designId = Convert.ToInt32(TempData["Design"]);
.........
........
........................
string title = "custom" + ".pdf";
string imageBase64 = "";
DesignComponent designComp = new DesignComponent();
if (designId != 0)
{
designComp = dbConnection.DesignComponent.Where(p => p.Id == designId).FirstOrDefault();
}
else
{
designComp = dbConnection.DesignComponent.FirstOrDefault();
}
imageBase64 = designComp.DisplayImage;
byte[] pdfInBytes = ExportManagementHelper.exportToPDF(liftChoice, title, title, imageBase64);
return File(pdfInBytes, "application/pdf", title);
}