我想用,和html-pdf
保存报价,并将其发送给客户。sails
.ejs
angular
pdf
一个.ejs
文件(查看文件夹)及其分配.js
控制器(资产文件夹)允许用户创建报价、选择客户、添加产品,最后计算报价总额。所有数据都与角度绑定。我为我的CSS使用bootstrap.min.css
和importer.css
文件,主要是为我的显示使用 Bootstrap 网格。
何时准备好报价,我有一个“另存为 PDF”按钮,该按钮删除(使用ng-if
)客户不需要在其报价中看到的所有部分,并且我的资产控制器调用生成PDF的 api 控制器。
这是我的资产/js/控制器代码:
$scope.printPdf = function() {
$http.post('/page/create-pdf', {
printView: document.getElementById('printPdfSection').innerHTML,
quoteNumber: $scope.createdQuote.createdAt,
})
.then(function onSuccess(sailsResponse){
console.log('PDF CREATED');
})
.catch(function onError(sailsResponse){
console.error('PDF ERROR :', sailsResponse);
});
};
这是我的 api/controllers 代码:
printPdf: function(req, res) {
var pdf = require('html-pdf');
var moment = require('moment');
var fs = require('fs');
var quoteNumber = moment(req.param('quoteNumber')).format('YYMMDDHHmm');
var html = req.param('printView');
var options = {
format: 'Letter',
border: {
"top": "1in", // default is 0, units: mm, cm, in, px
"right": "1in",
"bottom": "1in",
"left": "1in"
},
base: req.protocol + '://' + req.get('host'),
};
pdf.create(html, options).toFile('./assets/pdfs/'+ quoteNumber +'.pdf', function(err, res) {
if (err) return console.log(err);
console.log(res);
});
}
我有一张显示正常的图片,所以基本选项应该能够获得我的css,但它不是......有什么想法吗?
编辑 :
好吧,我修好了。我在我的 html 之前发送我的CSS,现在它可以工作了。
var myCSS = '<link rel="stylesheet" href="/styles/bootstrap.min.css"><link rel="stylesheet" href="/styles/importer.css">';
$http.post('/page/create-pdf', {
printView: myCSS + document.getElementById('printPdfSection').innerHTML,
...
我现在确实有2个问题...
1- 网格显示正常,但我的 div 标签有边框和背景颜色,它们没有显示,我想我看到了一些东西,@media
但我从未使用过它,所以我真的不知道这里有什么问题。
2- 在PDF中一切正常(图片和网格布局显示),我 id="pageHeader"
在我想用作标题的部分的 div 标签中添加了 。我试过了,现在该部分没有显示图像或网格显示......我的html显示在我的浏览器中,所以我必须对 pageHeader
id 做其他事情才能不弄乱我的CSS吗?