NodeJSを使用してPDFファイルをダウンロードし、そのデータをクライアントに送信してページに埋め込むようにしています。ここにPDFファイルをダウンロードする方法を示します。
exports.sendPdf = function(req, responce) {
var donneRecu = req.body;
var url = 'http://www.ieee.org/documents/ieeecopyrightform.pdf'//pdf link
http.get(url, function(res) {
var data = '';
res.on('data', function(chunk) {
console.log('downloading');
data += chunk;
});
res.on("end", function() {
console.log('downloaded');
responce.header("Access-Control-Allow-Origin", "*");
responce.header("Access-Control-Allow-Headers", "X-Requested-With");
responce.header(200, {'content-type' : 'application/pdf'});
responce.send(data);
});
}).on("error", function() {
callback(null);
});
}
NodeJSから受信したデータをクライアント側に送信するにはどうすればよいですか?
[〜#〜] edit [〜#〜]解決策を見つけました:
exports.sendPdf = function(req, res) { var donneRecu = req.body; console.log(donneRecu['lien']); var url = donneRecu['lien']; //pdf link http.get(url, function(response) { var chunks = []; response.on('data', function(chunk) { console.log('downloading'); chunks.Push(chunk); }); response.on("end", function() { console.log('downloaded'); var jsfile = new Buffer.concat(chunks).toString('base64'); console.log('converted to base64'); res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "X-Requested-With"); res.header('content-type', 'application/pdf'); res.send(jsfile); }); }).on("error", function() { callback(null); }); }
次のangularコントローラ:
var pdf = $scope.base64ToUint8Array(data); PDFJS.getDocument(pdf).then(functiongetPdfHelloWorld(_pdfDoc) { $scope.pdfDoc = _pdfDoc;$scope.renderPage($scope.pageNum); });
私は解決策を見つけました:
exports.sendPdf = function(req, res) { var donneRecu = req.body; console.log(donneRecu['lien']); var url = donneRecu['lien']; //pdf link http.get(url, function(response) { var chunks = []; response.on('data', function(chunk) { console.log('downloading'); chunks.Push(chunk); }); response.on("end", function() { console.log('downloaded'); var jsfile = new Buffer.concat(chunks).toString('base64'); console.log('converted to base64'); res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "X-Requested-With"); res.header('content-type', 'application/pdf'); res.send(jsfile); }); }).on("error", function() { callback(null); }); }
次のangularコントローラ:
var pdf = $scope.base64ToUint8Array(data); PDFJS.getDocument(pdf).then(functiongetPdfHelloWorld(_pdfDoc) { $scope.pdfDoc = _pdfDoc;$scope.renderPage($scope.pageNum); });
私も同じ状況に直面し、以下のコードが役立ちました。
var fs = require("fs");
var file = fs.createReadStream('./public/modules/datacollectors/output.pdf');
var stat = fs.statSync('./public/modules/datacollectors/output.pdf');
res.setHeader('Content-Length', stat.size);
res.setHeader('Content-Type', 'application/pdf');
res.setHeader('Content-Disposition', 'attachment; filename=quote.pdf');
file.pipe(res);
それが役に立てば幸い。