PhantomJS PDF文件到Base64

时间:2014-05-19 17:04:31

标签: node.js pdf phantomjs

我正在使用PhantomJS并通过渲染我自己的网站来处理PDF文件,现在工作正常(文件正在创建,一切似乎都在localhost中正常)。

这一切都来自我的实际服务器(NoseJS)的帖子,我试图发送响应.pdf PhantomJS,我尝试发送二进制文件,base64以及我发现的所有方式web ...现在我将文件转换为幻像中的base64并将其发送到Node,Node创建文件,文件空白且大小更大(幻像文件:15Mb,节点文件:29Mb)

我的问题是,有没有人知道一个简单的方法?

我的代码现在:

PhantomJS:

function utf8_to_b64(str) {
  return window.btoa(unescape(encodeURIComponent(str)));
}

var server = require('webserver').create();
var fs = require('fs');

var port = require('system').env.PORT || 8080; // default back to 8080
server.listen(port, function(request, response) {

  if (request.method === 'POST') {
    var page = new WebPage();
    var objeto = request.post;

    page.paperSize = {
      format: 'A4',
      orientation: 'portrait',
      margin: '1cm'
    };

    page.open("http://google.com", function(status) {
      if (status !== 'success') {
        console.log('Unable to load the address!');
      } else {

        //page.render(app + '.pdf', {
        page.render('prueba.pdf', {
          format: 'pdf',
          quality: '100'
        });

        var archivo = fs.open('prueba.pdf', 'r');
        archivo = archivo.read();
        archivo = utf8_to_b64(archivo);
        console.log('done');
        //fs.remove('prueba.pdf');

        response.statusCode = 200;
        response.headers = {
          'Content-type': 'text/plain'
        };
        response.write(archivo);
        response.close();
        page.close();

        //phantom.exit();

      }

    });
  }
});

的NodeJS:

request
  .post('http://localhost:8080/')
    .send({
      app: req.body.app,
      url: 'google.com'
    })
    .end(function(err, respond) {
      console.log('post a phantom');
      console.log('error: ', err);
      fs.writeFile('prueba.pdf', respond.text, 'base64', function(err) {
        if (err) throw err;
        console.log('It\'s saved!');
      });
      res.json(resJSON.ok());
    });

有什么想法吗?

0 个答案:

没有答案