目前在我的html页面中我更改了一些值,它的工作方式是这样的:
功能:
function change1(){
var myNewTitle = document.getElementById('myTextField1').value;
if( myNewTitle.length==0 ){
alert('Write Some real Text please.');
return;
}
var titles = document.getElementsByClassName('title1');
Array.prototype.forEach.call(titles,title => {
title.innerHTML = myNewTitle;
});
}
要更改的值和用于输入的文本字段:
Voornaam: <h3 class="title1">Kevin</h3>
<input type="text" id="myTextField1"/>
<input type="submit" id="byBtn" value="Change" onclick="change1()"/><br/>
<p class="title1">Test.</p>
我使用wkhtmltopdf转换,这是一个用于html到PDF转换的命令行工具。但是,我所做的更改不是在服务器上进行的,而是在本地进行的,这就是我的更改未在转换中显示的原因。
我正在考虑首先下载更改后的html页面,然后使用wkhtmltopdf进行转换。 是否有人能够给我一个如何做到这一点的例子,或者可能是我另一个更好的方式?
答案 0 :(得分:1)
您必须通过页面内容和wkhtmltopdfon发送服务器才能完成这项工作。
在客户端,你需要所有这样的功能:
function send(){
var f = document.createElement("form"),
i = document.createElement("input"); //input element, hidden
f.setAttribute('method',"post");
f.setAttribute('action',"http://yourserver.com/script.php");
i.setAttribute('type',"hidden");
i.setAttribute('name',"content");
i.setAttribute('value', document.body.innerHTML); // or the container you need
f.appendChild(i);
document.getElementsByTagName('body')[0].appendChild(f);
f.submit();
};
在服务器端,例如在php中,您将获取内容,将其保存在临时文件中,然后调用该工具将其转换为pdf,然后将pdf返回给客户端:
<?php
try {
$content = $_REQUEST['content'];
if(!file_exists('/tmp') ){
mkdir('/tmp', 0777);
}
$fp = fopen('w+','/tmp/tmp.html');
if($fp){
fwrite($fp, $content);
fclose($fp);
$filename = '/tmp/out_' . time() .'.pdf'; // output filename
shell_exec('wkhtmltopdf /tmp/tmp.html ' . $filename);
//then eventually ask user for download the result
header("Content-type:application/pdf");
// It will be called output.pdf
header("Content-Disposition:attachment;filename='output.pdf'");
readfile($filename);
}else{
echo 'html file could not be created';
}
} catch (Exception $e) {
echo 'exception: ', $e->getMessage(), "\n";
}