2013-11-26 90 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);