2012-04-12 5 views
6

Ich habe eine node.js-Anwendung, in der ich pdfkit verwende, um PDF-Dokumente zu erzeugen. Ich möchte in der Lage sein, Bilder von einer URL in das PDF einzufügen. Ich kann das Bild nicht im Dateisystem speichern, da meine Laufzeitumgebung schreibgeschützt ist und das PDF-Kit die Bilder aus einem Dateisystemverzeichnis zu finden scheint. Gibt es eine Möglichkeit, eine URL im PDF-Kit zu verwenden, um ein Bild einzubetten?Können PDF-Dateien Bilder von einer URL speichern?


Here. Dieser Typ hat das pdfkit so modifiziert, dass es diese Funktionalität enthält.

+1

Nein, das ist mit der aktuellen Implementierung nicht möglich. Aber ich kann Ihnen sagen, dass es einfach ist, die Quelle zu ändern und diese Funktion zu implementieren. –

+0

Ich nehme an, diese Frage betrifft [dieses pdfkit] (http://pdfkit.org/) –

+0

[This] (https://github.com/devongovett/pdfkit/blob/master/lib/image.coffee#L13) ist, wo es die Datei liest. Sie können es zum Beispiel in '@contents = Dateiname' oder alles, was Sie wollen, ändern. –

Antwort

1

können Sie http.get verwenden:

http.get('YOUR URL TO GET THE IMAGE').on('response', function(res) 
    res.setEncoding('binary'); 
    res.on('data', function(chunk){ 
     buffer += chunk; 
    }); 
    res.on('end', function(){ 

    fs.writeFile('PATH TO SAVE IMAGE', buffer, 'binary', function (err) { 
     if (err){ 
      throw err; 
     } 
     doc = new PDFDocument({ size: 'LETTER or any other size pdfkit offer' }); 
     doc.image('PATH TO SAVE IMAGE', 0, 0, { fit: [WIDTH, HEIGHT] }) 
     .fontSize(10).text('text 1', 100, 170) 
     .fontSize(16).text('text 2', 60, 120) 

    }); //After file is download and was write into the HD will use it 

}).end(); //EO Downloading the file 
2

PDFKit unterstützt nun Puffer zum doc.image Verfahren anstelle eines Dateinamens übergeben. Siehe this commit. So können Sie tun, wie die andere Antwort vorschlägt, und laden Sie das Bild von der URL selbst, und übergeben Sie dann den Puffer direkt an PDFKit, anstatt es zuerst in einer Datei zu speichern.