我使用wkhtml2pdf根据提供的HTML生成pdf。在我的HTML页面中,我包括moment.js并使用它的函数来转换日期。
日期在html页面上正确转换,但在wkhtml2pdf处理后,未显示日期。
对wkhtml2pdf的调用如下:
$html_in_string = $this->load->view('phr_print', $phr_print_response, true);
// Create PDF object.
$pdf = new WKPDF();
// Set PDF's HTML
$pdf->set_html($html_in_string);
// Convert HTML to PDF
$pdf->render();
// Output PDF. The file name is suggested to the browser.
$pdf->output(WKPDF::$PDF_EMBEDDED, 'phr_print.pdf');
下面的脚本是phr_print.php文件和其他代码。
<script type="text/javascript">
$(document).ready(function(){
$(".format-date").each(function(el){
var timestamp = $(this).data('timestamp');
if( jQuery.trim(timestamp) != "" ){
timestamp = timestamp * 1000;
var format = $(this).data('format') ;
format = jQuery.trim(format)==""?"MM/DD/YYYY":format;
var datetime = moment( timestamp ).format( format );
$(this).html( datetime ) ;
}
});
});
</script>
moment.js版本是2.0.0,而wkhtmltopdf版本是0.9.9。
非常感谢任何帮助。
答案 0 :(得分:0)
当您通过浏览器查看时刻正在使用浏览器的时区但是当您从wkhtmltopdf调用时它正在使用默认服务器的时区来解决此问题,请按照以下步骤操作: -
new Date().getTimezoneOffset()
将该时区传递到您的视图并更新您的上述javascript
$(document).ready(function(){
$(".format-date").each(function(el){
var timestamp = $(this).data('timestamp');
//Add your zone as a data attribute in dom that you had passed
//or store it as a global veriable
var zone = $(this).data('zone') ? $(this).data('zone') : 0;
if( jQuery.trim(timestamp) != "" ){
timestamp = timestamp * 1000;
var format = $(this).data('format') ;
format = jQuery.trim(format)==""?"MM/DD/YYYY":format;
var m = moment(timestamp);
m = m.zone(zone);
var datetime = m.format( format );
$(this).html( datetime ) ;
}
});
});
我希望这能解决您的问题