2016-12-31 2 views
0

Meine Webanwendung erstellt eine HTTPS GET-Anforderung an eine externe API. Was erhalte ich eine PDF-Datei, die beginnt mit:Leere Seiten in PDF, die von API abgerufen wurden

%PDF-1.4 

Was ich möchte, ist diese PDF tun speichert auf dem Server auf diese Datei an den Client zu dienen. Das Problem besteht darin, dass in der PDF-Datei einige leere Seiten vorhanden sind. Hier

ist der Code für die PDF abgerufen und auf den Server zu speichern:

Meteor.http.get('url/' + chartId, { 
     headers: { 
     Authorization: 'Bearer ' + key.token 
     } 
    }, function(err, result) { 
     if(!err) { 
     var fs = Npm.require('fs'); 
     var path = process.env['METEOR_SHELL_DIR'] + '/../../../public'; 

     fs.writeFile(path + "/charts/" + Meteor.userId() + '.pdf', result.content, (function (err) { 
      if (err) { 
       console.log("Error:" + err); 
      } 
     })); 

     } else { 
     throw new Error('Error from API getting documents'); 
     } 
    }); 

Das Seltsame ist, dass der PDF mich auf den Server speichern zeigt Seiten mit Text auf sie, sondern zeigt leere Seiten wo sollte es Bilder (Diagramme) sein. Perhabs, das ist ein Codierproblem?

+1

Ist es möglich, dass 'result.content' den Inhalt als Zeichenfolge zurückgibt? In diesem Fall müssten Sie nach einer anderen Eigenschaft suchen, die sie als ursprüngliche Bytes zurückgibt. – mkl

+0

@mkl 'result.content' gibt tatsächlich eine Zeichenkette zurück. Leider sind dies die einzigen Daten, die ich aus der Antwort erhalten kann. Gibt es eine Möglichkeit, die ursprünglichen Bytes aus dieser Zeichenfolge zu erhalten? – JoeriSmits

+0

Das Interpretieren einer Binärdatei als Text ist normalerweise destruktiv, d. H. Nicht umkehrbar. Da ich bezüglich Javascript und insbesondere Meteor nicht so gut informiert bin, weiß ich nicht, ob der vorliegende Fall eine Ausnahme ist. – mkl

Antwort

0

Ok, so wie ich zuerst vermutete, hat dies etwas mit Codierung zu tun. Stellen Sie sicher, dass Sie die richtigen Header auf der http-Anforderung encoding: 'binary' festlegen und die richtige Codierung verwenden, während Sie .writeFile() verwenden.

Quelle: Node express save pdf from binary string

Verwandte Themen