3
我正在嘗試設置一種將HTML文件呈現爲PDF的方式。 HTML文件是動態生成的,並且它們的頁眉和頁腳具有單獨的HTML文件,這些文件需要附加到每個頁面。當使用PhantomJS呈現爲PDF時,是否可以將外部HTML文件包含爲頁眉/頁腳?
我能否讓PhantomJS拿起這些單獨的文件並將其顯示在頁眉和頁腳部分?當我在傳遞給PhantomJS的JavaScript文件中擁有HTML文件時,我可以獲取頁眉和頁腳,就像我包含的示例代碼一樣,但我對HTML,CSS,Javascript(和Node?)不熟悉瞭解是否有明確的方式去做我想做的事。
這是我的時刻:
var page = require('webpage').create();
//set the page size and add headers & footers
page.paperSize = {
format: 'A4',
margin: '.5cm',
header: {
height: "1cm",
contents: phantom.callback(function(pageNum, numPages) {
return "<h1 style='font-size:12.0; font-family:Arial,Helvetica,FreeSans,sans-serif'>Header <span style='float:right'>" + pageNum + "/" + numPages + "</span></h1>";
})
},
footer: {
height: "1cm",
contents: phantom.callback(function(pageNum, numPages) {
return "<h1 style='font-size:12.0; font-family:Arial,Helvetica,FreeSans,sans-serif'>Footer <span style='float:right'>" + pageNum + "/" + numPages + "</span></h1>";
})
}
}
//open the page
page.open('tools.html', function() {
page.render('woki2.pdf');
phantom.exit();
});
它的工作原理,添加頁眉和頁腳,但需要內嵌樣式(我相信我可以these methods得到解決),但我寧願能選取外部HTML文件,以便a)可以使用不同的頁眉和頁腳,具體取決於要轉換的文件的類型;和b)使得HTML文件可以很容易地編輯而不用更改JS文件。
這是頭HTML文件的例子:
<!DOCTYPE html>
<html>
<head>
<script>
function subst() {
var vars = {};
var x = window.location.search.substring(1).split('&');
for (var i in x) {
var z = x[i].split('=', 2);
vars[z[0]] = unescape(z[1]);
}
var x = ['frompage', 'topage', 'page', 'webpage', 'section', 'subsection', 'subsubsection', 'date', 'time'];
for (var i in x) {
var y = document.getElementsByClassName(x[i]);
for (var j = 0; j < y.length; ++j) y[j].textContent = vars[x[i]];
}
}
</script>
</head>
<body style="border:0; margin: 0;" onload="subst()">
<table style="width: 100%">
<tr>
<td>Generated by *person* on <span class="date"></span> <span class="time"></span></td>
<td style="text-align:right">
Page <span class="page"></span> of <span class="topage"></span>
</td>
</tr>
</table>
</body>
</html>
雖然我知道我也可以達到類似的事情的是與第一例子代表那裏,我寧願有文件分開如果可能的話。
使用它你的意思是外部的自定義模板文件? –
@ArtjomB。我將爲該問題添加一個HTML文件的例子,因爲我可能應該將它包括在內。 – evolutionise