2012-04-12 26 views
6

Tengo una aplicación node.js en la que estoy usando pdfkit para generar documentos pdf. Quiero poder incluir imágenes de una url en el pdf. No puedo guardar la imagen en el sistema de archivos porque mi entorno de ejecución es de solo lectura y el kit pdf parece encontrar las imágenes para incrustar desde un directorio del sistema de archivos. ¿Hay alguna forma de que pueda usar una url en el kit de pdf para incrustar una imagen?¿Puede el kit pdf guardar imágenes de una url?


Here. Este chico modificó el pdfkit para incluir esa funcionalidad.

+1

No, eso no es posible con la implementación actual. Pero puedo decirte que es fácil modificar la fuente e implementar esta característica. –

+0

Supongo que esta pregunta es sobre [este pdfkit] (http://pdfkit.org/) –

+0

[Esto] (https://github.com/devongovett/pdfkit/blob/master/lib/image.coffee#L13) es donde lee el archivo. Puede, por ejemplo, cambiarlo a '@contents = filename' o cualquier cosa que quiera que sea. –

Respuesta

1

puede utilizar http.get:

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 que pasa ahora es compatible con amortiguadores para el método en lugar de un nombre de archivo doc.image. Ver this commit. Así que podría hacer lo que sugiere la otra respuesta, y descargar la imagen de la URL usted mismo, y luego pasar el búfer directamente a PDFKit en lugar de guardarlo primero en un archivo.

Cuestiones relacionadas