如何使用PhantomJS将html / css导出为A4 pdf而不会在每页上导致溢出?

时间:2015-01-27 10:08:36

标签: javascript html css pdf-generation phantomjs

我正在创建一个基于Web的文本编辑器,我想要一个基于服务器的解决方案(最好使用PhantomJS)将文档导出为A4尺寸的pdf,没有边距。不幸的是我无法正确导出我的页面。我设法在chrome中使用print to pdf接近完美的pdf,但是使用最新版本的PhantomJS导出同一页面会导致每页上出现大约1mm的溢出,这会产生很多几乎空白的页面。

这是我的测试html,三个A4尺寸的页面,具有不同的背景颜色:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Print test</title>
    <style>
        * {
            box-sizing: border-box;
            margin: 0;
            padding: 0;
        }
        html,
        body {
            width: 210mm;
        }
        .page {
            page-break-after: always;
            width: 210mm;
            height: 297mm;
        }
        @page {
            size: A4;
            margin: 0;
        }
    </style>
</head>
<body>
    <div class="page" style="background-color:red;"></div>
    <div class="page" style="background-color:green;"></div>
    <div class="page" style="background-color:blue;"></div>
</body>
</html>

以下是我如何使用节点(mac os x)的'phantom'包打印它:

phantom = require('phantom')

phantom.create(function(ph) {
    ph.createPage(function(page) {
        page.set('paperSize', {
            width: '210mm',
            height: '297mm'
        });
        page.open("http://127.0.0.1:56587/print_test.html", function(status) {
            page.render('out.pdf', function() {
                console.log('Page Rendered');
                ph.exit();
            });
        });
    });
});

可以以A4尺寸导出这样的页面而没有边距并且不会导致溢出吗?

0 个答案:

没有答案