我正在使用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());
});
有什么想法吗?