使用 Meteor 和 Iron Router 渲染 PDF
Rendering a PDF using Meteor and Iron Router
我有一个pdf文件位于这里:
/server/.files/users/test.pdf
当我在页面上显示链接时,我希望用户能够单击该链接,并在屏幕上呈现pdf。
我已经通读了这个特别的SO帖子,以及其他帖子,但似乎无法让事情发挥作用:SO Link
我尝试使用 IR 路由服务器端,但每次尝试简单的事情时,我都会收到以下错误:
Error: Meteor.userId can only be invoked in method calls. Use this.userId in publish functions. at Object.Meteor.userId
(packages/accounts-base/accounts_server.js:19:1) at Object.Meteor.user (packages/accounts-base/accounts_server.js:24:1) at [object 对象]。Router.onBeforeAction.except (应用程序/两者/3 路由器/路由.js:10:15) 在 packages/iron:router/lib/router.js:277:1 at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1) at [object Object].hookWithOptions (packages/iron:router/lib/router.js:276:1) at boundNext (packages/iron:middleware-stack/lib/middleware_stack.js:251:1) at runWithEnvironment (packages/meteor/dynamics_nodejs.js:108:1) at packages/meteor/dynamics_nodejs.js:121:1 at [object Object].dispatch (包/熨斗:中间件堆栈/lib/middleware_stack.js:275:1)
行:#10 在我的路由器中.js文件是这里的第一个if
语句:
Router.onBeforeAction(function () {
if (!Meteor.user() || Meteor.loggingIn()) {
this.redirect('welcome.view'); } else {
Meteor.call("userFileDirectory", function (error, result) {
if (error)
throw error;
else
console.log(result);
});
this.next();
} }, { except: ['welcome.view'] });
我试过这个:
Router.map(function() {
this.route('serverFile', {
where: 'server',
path: /^'/uploads_url_prefix'/(.*)$/,
action: function() {
var filePath = process.env.PWD + '/.files/users/' + this.params[1];
var data = fs.readFileSync(filePath);
this.response.writeHead(200, {
'Content-Type': 'image'
});
this.response.write(data);
this.response.end();
}
}); });
但我不确定该在路径中放什么。
使用 process.env.PWD,您将进入流星项目的目录。因此,您应该能够像这样访问您的文件:
var file = process.env.PWD + "/server/.files/users/test.pdf"
要使用节点的 fs 包,您还需要包含它,并且您需要在服务器上:
Router.route('/pdf', function() {
var filePath = process.env.PWD + "/server/.files/users/test.pdf";
var fs = Meteor.npmRequire('fs');
var data = fs.readFileSync(filePath);
this.response.write(data);
this.response.end();
}, {
where: 'server'
});
确保将此包到您的项目 (https://atmospherejs.com/meteorhacks/npm)
meteor add meteorhacks:npm
我测试了它,它就像一个魅力!
- 将php页面的一个部分渲染为HTML和CSS后生成PDF,并考虑PDF分页符
- 在流星星系的网络拍摄pdf中渲染图像
- 使用PDF.JS和AngularJS从字节数组渲染PDF
- 有没有办法用pdf.js为pdf渲染编写javascript事件
- 角度 - pdf 在调整大小之前不会渲染
- 使用 Meteor 和 Iron Router 渲染 PDF
- 在使用 PhantomJS 渲染为 PDF 时,我可以将外部 HTML 文件作为页眉/页脚包含在内吗?
- 是否可以将相对 URL 提供给 Phantom.js页面生成器以获取 PDF 渲染
- 让 Javascript 在以 ABC pdf 格式渲染 pdf 之前完成
- RoR渲染PDF并自动打印
- 从html页面渲染pdf
- PhantomJs在渲染pdf时将页眉边距设置为0
- 如何使用pdf.js库渲染整个pdf文档
- 使用javascript渲染PDF
- 使用PhantomJS将多个页面渲染为pdf文件
- PDF. js:渲染PDF使用ArrayBuffer或Blob代替URL
- 创建pdf与wkhtmltopdf和渲染javascript
- 在DOMContentLoaded/Document Ready上用PhantomJS渲染HTML到PDF
- 使用phantomJS渲染pdf时消除边距
- 使用mozilla-pdf在chrome浏览器中渲染PDF文件