猿问

在PPT转PDF的时候保存好文件,但是打开PDF这个文件是空白的问题没解决

// ppt 格式

if (

   req.files[0].mimetype === 'application/vnd.openxmlformats-officedocument.presentationml.presentation' ||

   req.files[0].mimetype === 'application/vnd.ms-powerpoint'

) {

     var form = formstream();

     form.buffer('file', des_file, req.files[0].originalname.substring(0, req.files[0].originalname.lastIndexOf('.')));

     var options = {

         method: 'POST',

         host: '127.0.0.1',

         port: '5000',

         path: '/unoconv/pdf/',

         headers: form.headers()

     };

     const promise = new Promise(function (resolve, reject) {

           var reqs = http.request(options, function (res) {

               var _data = '';

               res.on('data', function (data) {

                   _data += data;

               }).on('end', function () {

                   resolve(_data);

               }).on('error', function (err) {

                   reject(err);

               });

           });

           form.pipe(reqs);

     })

     promise.then(function (buffer) {

         console.log(buffer, 'success')    // buffet输出的是乱码的,好像是二进制的

         fs.writeFile('./test.pdf', buffer, function (err) {

            if (err) {        

               console.log(err);

            }

         })

         // 保存pdf文件

     }, function (err) {

         console.log(err, 'failure')

     })

     }

完成转换的时候再次保存好pdf这个文件,然而打开这个文件都是空白的,这到底是什么问题的?


温温酱
浏览 2288回答 2
2回答

墨色风雨

如果我没猜错的话。。pipe里边返回的应该是一个Buffer对象,或者二进制的数据流什么之类的。你直接拿String应该会出问题的。试着在拼接前先调用toString或者认为data为Buffer对象,将所有的Buffer存到一个数组中,然后在最后concat到一起,再进行写入文件的操作。

白板的微信

你用的是什么库?仔细看下文档,看什么侦听转换结束的事件,或者应该写哪些内容。从你的代码里看不出。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答