Abe Estrada

Node.js + PDFKit (zlib_bindings.node)

Desde hace unas semanas he estado desarrollando un proyecto para la escuela utilizando Node.js , y parte fundamental del proyecto es generar archivos PDF. Para esta función existe PDFKit , que es un módulo para generar PDFs fácilmente.

Error: Unable to load shared library ./node_modules/pdfkit/node_modules/flate/lib/zlib_bindings.node

La solución es muy fácil y esta documentado el error en el repositorio de Github de PDFKit. Es tan simple como copiar el archivo ./node_modules/pdfkit/node_modules/flate/build/Release/zlib_bindings.node y pegarlo en ./node_modules/pdfkit/node_modules/flate/lib/zlib_bindings.node y asunto arreglado, siempre y cuando se cuente con acceso directo al sistema de archivos.

La aplicación en la que me encuentro trabajando esta hospedada en Heroku y por tal motivo no tengo acceso directo a los archivos, así que después de contactar el servicio de soporte de Heroku, encontré como única solución es copiar el archivo que necesito pero por medio de programación directa en Node.js. Mi solución fueron estas 5 lneas de código.

var fs = require('fs');
var util = require('util');

var is = fs.createReadStream('./node_modules/pdfkit/node_modules/flate/build/Release/zlib_bindings.node');
var os = fs.createWriteStream('./node_modules/pdfkit/node_modules/flate/lib/zlib_bindings.node');

util.pump(is, os);

La verdad no se si sea la mejor solución o la más optima, pero mientras los desarrolladores de PDFKit lanzan una nueva versión, es la nica forma que encontré de hacer funcionar PDFKit dentro de Heroku mientras el equipo de Node.js y soporte de Heroku atienden mi ticket.

*Actualización: El error ha sido solucionado