Auf meiner Serverseite benutze ich ASP.NET MVC Web Api, wo ich die PDF-Datei mit Crystal Reports erzeuge und in das PDF-Format exportiere. Der Code lautet wie folgt:Wie man einen serverseitig erzeugten PDF-Stream in Javascript über HttpMessageResponse anzeigt Inhalt
[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;
}
Mein Javascript-Code ist:
$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);
});
};
Dieses einfach nicht funktioniert. Ich weiß nicht, was mit diesem Code nicht stimmt. Ich bekomme den Browser, um den PDF-Viewer zu öffnen, aber es ist leer. Außerdem wird die erstellte PDF korrekt erstellt, da ich sie auf der Festplatte speichern und mit dem Adobe Acrobat Viewer öffnen kann. Der Inhalt der HttpResponseMessage scheint auch korrekt über Fiddler angezeigt zu werden. Siehe Bild:
einen Blick auf [diese eins] [1], zeigt, wie man pdf-Datei exportiert 0 [1]: http://stackoverflow.com/questions/17094822/export-as-a-pdf-file-using-crystal-report – sakir
Ich möchte nicht, dass es in einer Datei gespeichert wird. Ich baue eine Single-Page-Anwendung (angularjs) und was ich brauche, ist die Rückgabe der PDF über einen Web-API-Endpunkt Anruf an den Client und irgendwie Anzeige über Javascript. – zszep