我正在使用html2pdf生成pdf文件。我想将这些文件在后台保存在磁盘上。我正在使用带有参数“ datauri”的html2pdf.outputPdf(jsPDF.output)进行64位编码。
然后我在php脚本中将其解码并保存。当我尝试在文件夹中打开生成的文件时,我从Adobe处收到消息,指出文件已损坏(可能未正确解码)。
为什么会这样,我该如何解决?
Javascript:
<script>
$(document).ready(function() {
$('#Save').on('click', function () {
element = document.getElementById('root');
var pdf;
var pdfout;
var Narvarande = "Johnny";
var filnamn = "123456";
var Lagenhetsadress = "BB1234 43";
//html2pdf().from(element).save();
//console.log("CLicked!");
html2pdf().from(element).outputPdf('datauri').then(function(pdfout){
// console.log(btoa(pdf));;
$.ajax({
method: "POST",
url: "includes/skickapdf.php",
data: {
data: pdfout,
besiktare: Narvarande,
namn: filnamn,
adress: Lagenhetsadress,
},
}).done(function(data){
console.log("Return från skickapdf: ");
console.log(data);
});
});
});
});
</script>
PHP:
<?php
if(!empty($_POST['data']) && isset($_POST['namn']) &&isset($_POST['besiktare'])&& isset($_POST['adress']))
{
$N = $_POST['namn'];
$B = $_POST['besiktare'];
$A = $_POST['adress'];
$data = base64_decode($_POST['data']);
echo ($N);
// print_r($data);
file_put_contents("{$N}.pdf", $data);
}
else {
echo "No Data Sent";
echo "--------------";
echo $_POST['data'];
echo "--------------";
}``
?>
答案 0 :(得分:0)
如果您只想将html保存为pdf,则可能要使用jsPDF的.html()
和html2canvas 1.0.0-alpha.12
,而不必使用html2pdf
。
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.debug.js"
integrity="sha384-NaWTHo/8YCBYJ59830LTz/P4aQZK1sS0SneOgAvhsIl3zBu8r9RevNg5lHCHAuQ/"
crossorigin="anonymous"></script>
<script src="https://html2canvas.hertzen.com/dist/html2canvas.min.js"></script>
<!-- html2canvas 1.0.0-alpha.11 or higher version is needed -->
<script>
function onClick() {
let pdf = new jsPDF('p', 'pt', 'letter');
pdf.html(document.body, {
callback: function () {
pdf.save('test.pdf');
window.open(pdf.output('bloburl')); // To debug.
}
});
}
</script>