Почему у меня не печатается pdf документ?
Пишу код, который должен создавать pdf документ. Сначала я сделал всё на локальной машине, а потом перенес код на сервер, а точнее на систему 1с битрикс. На сервере он перестал работать, как надо (печатать документ), сейчас выдает белый лист.
function getKP() {
return new Promise((resolve, reject) => {
$.ajax({
url: "/url/url.php",
success: function (response) {
resolve(response);
},
error: function (error) {
console.error("Ошибка при отправке запроса на бэкенд:", error);
reject(error);
}
});
});
}
async function calculate() {
try {
const forPerson = $("#for_person").val().trim();
if (!forPerson) {
alert("Пожалуйста, введите имя получения.");
return;
}
let kp = await getKP();
console.log(kp);
const kpContainer = document.getElementById("kp-container");
kpContainer.innerHTML = kp;
// Настройки для генерации PDF
const opt = {
margin: 1,
filename: `Коммерческое Предложение для ${forPerson} №.pdf`,
html2canvas: {scale: 2, logging: true, dpi: 288, letterRendering: true, useCORS: true},
jsPDF: {unit: 'mm', format: 'a4', orientation: 'portrait'}
};
// Генерируем PDF из элемента
html2pdf().from(kpContainer).set(opt).save();
} catch (e) {
console.log(e);
}
}
Библиотеки поставлены:
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script>
Вот что выводится при коде console.log(kp)
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" href="assets/KP.css" media="all">
</head>
<body>
<div class="content-block content">
<div class="content-block2">
<div class="flex justify-center header2 ">
<img alt="Лого фирмы" src="/kalkulyator/assets/images/Logo.png" class="logo">
<div class="info-block flex">
<div class="flex justify-center">
<b>Текст</b>
</div>
<div>
Текст
</div>
<div class="flex justify-center">
текст
</div>
<div class="flex justify-center">
текст
</div>
<div class="flex justify-center">
<b>Сайт:</b>
</div>
</div>
</div>
<div class="line">
<div class="green">
</div>
<div class="gray">
</div>
</div>
<div class="kp-info flex justify-between margin-top-1 small-text">
<i class="KP-counter"><b>КП003</b></i>
</div>
<div class="flex justify-between small-text">
<i class="date"><b>От:</b></i> <i class="ferrum"></i>
</div>
<div class="margin-top-1 flex justify-end small-text">
<div>
<i><b>Кому:</b></i>
</div>
<div class="client margin-left-1 ">
</div>
</div>
<div class="flex justify-center margin-top-1">
<b>текст</b>
</div>
<div class="margin-top-1">
текст
</div>
<table class="margin-top-1">
<thead>
<tr>
<th>
№ п.п
</th>
<th>
Наименование
</th>
<th>
Описание
</th>
<th>
Количество, шт
</th>
<th>
Цена за единицу, руб.
</th>
<th>
Сумма, руб.
</th>
</tr>
</thead>
<tbody class="table-content">
</tbody>
</table>
<div class="container margin-top-2">
текст
</div>
<div class="line margin-top-2">
<div class="green">
</div>
<div class="gray">
</div>
</div>
<div class="flex footer margin-top-1 justify-between">
<div class="KP-counter">
КП003
</div>
<div class="flex justify-end">
<div>
Кому:
</div>
<div class="client margin-left-1 ">
</div>
<div class="margin-left-015">
</div>
</div>
<div>
текст
</div>
</div>
</div>
</div>
</body>
</html>
Повторяя тоже самое, абсолютно тоже самое на локальной машине у меня печатается нужный документ.
Если же я решаю для теста добавить содержимое kp
к странице, то тоже нормально добавляется снизу. Единственная проблема с печатью
UPDATE 27.08
В ходе эксперементов и кучи нажатий на кнопочку мне 1 раз удалось получить хоть что-то похожее на нужный мне документ. Код я никак не менял и как понимаю это просто удача. У меня ощущения, что как-то блокирует печать 1с битрикс.