Rest API, генерация файлов на стороне клиента - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть основной веб-сайт 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();
    }
...