2017-01-18 3 views
0

Я хотел бы открыть мой файл JS genereted по microservice (байт []):Как получить файл в формате PDF с помощью Javascript Аякса

public int getLabel(Request request, Response response) throws  IOException { 
     response.header("Access-Control-Allow-Origin", "*"); 
     ArrayList<JSONObject> orders = createListOfJSONObjects(request.queryParams("orders")); 
     response.header("Content-Type", "application/pdf"); 
     ServletOutputStream outputStream = response.raw().getOutputStream(); 
     outputStream.write(createPDF(orders)); 
     outputStream.flush(); 
     outputStream.close(); 

     return 200; 
    } 

Я хотел бы иметь ответ на AJAX:

$("#printlabels").click(function() { 
     var jsonData = $(this).data().ordersJson; 
     console.log(jsonData) 
     $.ajax({ 
      // type: GET, 
      async: true, 
      url: "http://localhost:60000/api/create-label", 
      data: {orders: jsonData}, 
      success: function(resp){ 
       ???; 
      } 

     }); 
    }); 

Я хочу, чтобы мой браузер, чтобы открыть или сохранить файл в формате PDF

+0

Лучше изменить данные файла PDF в закодированную в base64 строку в API. После этого в интерфейсе вы можете использовать PDF.js для декодирования этих строковых данных в двоичном файле PDF. (Возможное обсуждение для этого: http://stackoverflow.com/questions/12092633/pdf-js-rendering-a-pdf-file-using-a-base64-file-source-instead-of-url) – IzumiSy

ответ

0

не использовать Ajax, попробуйте следующее:

$("#printlabels").click(function() { 
    var jsonData = $(this).data().ordersJson; 

    var url = "http://localhost:60000/api/create-label"; 
    var $form = $('<form method="get" action="' + url + '" target="_blank" />'); 

    for (var key in jsonData) { 
     $form.append('<input type="hidden" name="' + key + '" value="' + jsonData[key] + '" /> '); 
    } 

    $form.submit(); 
}); 

Прочтите это, почему вы не можете сделать это с помощью ajax: https://stackoverflow.com/a/9821924/5611328