CSS問題,我想使用的HTML-PDF與帆,EJS和角度提出了報價保存到一個PDF格式將其發送給客戶。與HTML,PDF
.ejs文件(視圖文件夾)及其賦值.js控制器(assets文件夾)允許用戶創建報價,選擇客戶,添加產品,並最終計算報價總數。所有數據都以角度綁定。 我爲我的CSS使用bootstrap.min.css和importer.css文件,並且主要是我的顯示器的Bootstrap網格。
什麼時候報價已經準備好了,我有一個'另存爲PDF'按鈕,它刪除(用ng-if)客戶不需要在其報價上看到的所有部分,我的資產控制器調用api生成PDF的控制器。
這裏是我的資產/ 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 /控制器代碼:
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);
});
}
我有一張照片,顯示了OK的,因此基本選項應能夠得到我的CSS,但它不是...任何想法?
編輯:
好吧,我確定它。 我發送我的CSS在我的HTML之前,現在它的工作。
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標籤具有邊框和背景顏色,它們沒有顯示,我覺得我看到了一些關於@媒體,但我從來沒有使用過,所以我不知道這裏有什麼問題。
2-所有被精細(圖片和網格佈局顯示)在PDF,我在我想作爲頭部使用部分的我的div標籤添加了id =「pageHeader」。我試了一下,現在該部分沒有顯示圖像和網格顯示......我的html顯示在我的瀏覽器,所以我必須做一些與pageHeader ID的東西,它不會攪亂我的CSS?
從例子中,我可以看到HTML,PDF,它看起來像只是一個風格的標籤在你的HTML將工作的。這使得獲取角度應用的當前狀態非常困難!你需要的是一些代碼或者庫,它會從活動頁面的當前狀態創建一個樣式標籤,並在將其發送到服務器之前進行追加。 – arbuthnott
嗯,我設法通過手動添加我的樣式標籤在HTML之前,它是一種工作。但它不顯示我的div塊的背景顏色.... – StS