首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >webshot/phantom pdf,仅打印页面的后半部分

webshot/phantom pdf,仅打印页面的后半部分
EN

Stack Overflow用户
提问于 2015-06-05 12:56:10
回答 2查看 802关注 0票数 0

我正在使用webshot npm模块来创建我的页面的pdf文件

这是我的页面

我把这个作为pdf格式的输出

我的设置是

代码语言:javascript
复制
    var options = {
                  renderDelay:10000,
                    "paperSize": {
                        "format": "Letter", 
                        "orientation": "portrait", 
                        "border": "1cm"
                    },
                    shotSize: {
                        width: 'all',
                        height: 'all'
                    },
                    shotOffset: {
                        left: 0
                        , right: 0
                        , top: 0
                        , bottom: 0
                    }
                };

                webshot(url, fileName, options, function(err) {
                  fs.readFile(fileName, function (err,data) {
                    if (err) {
                      return console.log(err);
                    }

                    fs.unlinkSync(fileName);
                    fut.return(data);
                  });
                });

            this.response.writeHead(200, {'Content-Type': 'application/pdf',"Content-Disposition": "attachment; filename=generated.pdf"});
this.response.end(fut.wait());

对于流星专家来说,这是我的服务器端根目录

代码语言:javascript
复制
this.route('generatePDF', {
        path: '/api/generatePDF',
        where: 'server',
        action: function() {
            var webshot = Meteor.npmRequire('webshot');
            var fs      = Npm.require('fs');
            Future = Npm.require('fibers/future');
            var fut = new Future();
            var fileName = "generated_"+Random.id()+".pdf";
            var userid = (Meteor.isClient) ? Meteor.userId() : this.userId;
            console.log(userid);
            // var username = Meteor.users.findOne({_id: userid}).username;
            var url = "url";

            var options = {
              renderDelay:10000,
                "paperSize": {
                    "format": "Letter", 
                    "orientation": "portrait", 
                    "border": "1cm"
                },
                shotSize: {
                    width: 'all',
                    height: 'all'
                },
                shotOffset: {
                    left: 0
                    , right: 0
                    , top: 0
                    , bottom: 0
                }
            };

            webshot(url, fileName, options, function(err) {
              fs.readFile(fileName, function (err,data) {
                if (err) {
                  return console.log(err);
                }

                fs.unlinkSync(fileName);
                fut.return(data);
              });
            });

            this.response.writeHead(200, {'Content-Type': 'application/pdf',"Content-Disposition": "attachment; filename=generated.pdf"});
            this.response.end(fut.wait());
        }
    });

我是不是漏掉了什么?感谢您的任何帮助

EN

回答 2

Stack Overflow用户

发布于 2015-12-09 16:16:44

您可以尝试将paperSize更改为:

代码语言:javascript
复制
"paperSize": {
                width: '612px',
                height: '792px',
                margin: 'XXpx'
            },
票数 0
EN

Stack Overflow用户

发布于 2016-12-03 21:41:56

如果其他人在这方面有问题-我也有同样的问题。我不能告诉你确切的原因,但问题是我使用的是bootstrap,而我页面的包装器有"container“类。在移除这个类之后,整个页面都被呈现了--没有移除它,它只是呈现在页面的一半周围。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30658601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档