На моей стороне сервера я использую ASP.NET MVC Web Api, где я создаю PDF файл с помощью отчета Crystal и экспортирую его в формат PDF. Код выглядит следующим образом:
[HttpPost]
public HttpResponseMessage SetReport(string name, [FromBody]List<KontoDto> konta)
{
var response = Request.CreateResponse(HttpStatusCode.OK);
var strReportName = "KontoReport.rpt";
var rd = new ReportDocument();
string strPath = HttpContext.Current.Server.MapPath("~/") + "Reports//" + strReportName;
rd.Load(strPath);
rd.SetDataSource(konta);
var tip = ExportFormatType.PortableDocFormat;
var pdf = rd.ExportToStream(tip);
response.Headers.Clear();
response.Content = new StreamContent(pdf);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
return response;
}
Мой код Javascript:
$scope.xxprint = function () {
console.log($scope.konta);
$http.post('/api/konto/setReport/pdf', $scope.konta, { responseType: 'arraybuffer' })
.success(function (data) {
var file = new Blob([data], { type: 'application/pdf' });
var fileURL = URL.createObjectURL(file);
window.open(fileURL);
});
};
Это просто не работает. Я не знаю, что случилось с этим кодом. Я получаю браузер, чтобы открыть просмотрщик PDF, но он пуст. Кроме того, созданный pdf правильно создан, так как я могу сохранить его на диск и открыть его с помощью программы просмотра Adobe Acrobat. Содержимое HttpResponseMessage также выглядит правильно с помощью Fiddler. См. Изображение: