2013-11-26 65 views
4

我需要从画布创建pdf。有谁能够帮助我 ?在nodejs canvas中将png图像转换为pdf

这就是我试图

var http = require('http'), fs = require('fs'), 
Canvas = require('canvas'); 
var ht = require('https'); 
http.createServer(function (req, res) { 
dr(); 
function dr() 
{ 

    fs.readFile(__dirname + '/temp.jpg', function(err, data) { 
     if (err) throw err; 
     var img = new Canvas.Image; // Create a new Image 
     img.src = data; 

     var canvas = new Canvas(img.width, img.height,'pdf'); 
     var ctx = canvas.getContext('2d'); 
     ctx.drawImage(img, 0, 0, img.width/4, img.height/4); 
     res.writeHead(200, {'content-type' : 'application/pdf'}); 
     canvas.toDataURL('application/pdf', function(err, str){ 

     res.write(str); 

     res.end(); 

     }); 

    }); 

} 

}).listen(8124); 
+0

什么不行?你期望输出什么? –

+0

我需要将pdf显示回网页res.writeHead(200,{'content-type':'application/pdf'});但错误:目前只支持image/png。有没有其他的途径 – SHIN

+0

你实际上没有在代码中对PDF进行任何转换。你基本上只是改变了MIME类型。为NodeJS查找可以拍摄您生成的图像的PDF创建库。画布不能做到这一点。 – WiredPrairie

回答

3

此代码为我工作。

var http = require('http'), fs = require('fs'), 
Canvas = require('canvas'); 
var ht = require('https'); 
http.createServer(function (req, res) { 
dr(); 
function dr() 
{ 

    fs.readFile(__dirname + '/temp.jpg', function(err, data) { 
     if (err) throw err; 
     var img = new Canvas.Image; // Create a new Image 
     img.src = data; 

     var canvas = new Canvas(img.width, img.height, 'pdf'); 
     var ctx = canvas.getContext('2d'); 
     ctx.drawImage(img, 0, 0, img.width/4, img.height/4); 

     res.writeHead(200, {'content-type' : 'application/pdf'}); 
    res.write(canvas.toBuffer()); 
    res.end(); 
    }); 

} 

}).listen(8124);