我正在创建一个基于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尺寸导出这样的页面而没有边距并且不会导致溢出吗?