У меня есть основной веб-сайт asp.net с контроллером, который возвращает представление с моделью представления.
Это представление генерирует PDF на JavaScript с использованием jsPdf. Я не могу выполнить генерацию PDF на стороне сервера, потому что я использую клиентскую часть (fabric.js)
Я хотел бы предоставить API, чтобы можно было скачать этот pdf.
Когда я нажимаю на конечную точку в браузере, файл PDF загружается правильно.
Когда я использую почтальон или WebClient в C #, я не могу получить PDF ...
Я думаю, что я что-то упустил. Метод Test не работает, у меня есть PDF, но я не могу открыть его, это всего лишь 15ko: (
Мой взгляд:
<script src="/Scripts/fabric.js"></script>
<script src="/Scripts/jspdf.debug.js"></script>
<script type="text/javascript">
var canvas = new fabric.Canvas('canvas', {});
canvas.loadFromJSON(@Html.Raw(Model.Json),
() => {
canvas.setWidth(@Model.Width);
canvas.setHeight(@Model.Height);
var imgData = new Image();
imgData.crossOrigin = "Anonymous";
imgData.src = canvas.toDataURL('png');
var pdf = new jsPDF('p', 'pt', [@Model.Width, @Model.Height]);
pdf.addImage(imgData, 'PNG', 1, 1, @Model.Width, @Model.Height, 'Mockup', 'NONE', 0);
pdf.save('myMockup.pdf');
}
);
</script>
Мой контроллер:
public IActionResult Generate(int id)
{
var mockup = DynamicValueAppService.ParseMockup(id);
var mockupVM = new MockupGeneratorViewModel()
{
Width = mockup.Width,
Height = mockup.Height,
Json = JObject.Parse(mockup.Json)
};
Response.Headers.Add("Content-Type","application/octet-stream");
Response.Headers.Add("Content-Disposition", "attachment");
return View(mockupVM);
}
public IActionResult Test()
{
var client = new WebClient();
client.DownloadFile("http://localhost:21021/Mockup/generate/1", @"C:\mum.pdf");
return new EmptyResult();
}