const generatePDF = async () => {
if (!window.jspdf || !window.jspdf.jsPDF) {
await loadScript("https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js");
await loadScript("https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/3.5.28/jspdf.plugin.autotable.min.js");
}
const doc = new window.jspdf.jsPDF();
// ✅ دمج خط Amiri
doc.addFileToVFS("Amiri-Regular.ttf", `
AAEAAAAPAIAAAwBwT1MvMg8SBJcAAAC8AAAAYGNtYXAKDHZzAAABHAAAAFxnYXNwAAAAEAAAAXgAAAAIZ2x5ZliFEp0AAAGAAAAg8GhlYWQK9yoqAAABzAAAADZoaGVhCHsPogAAAXQAAAAkaG10eCRhAAAABeAAAAYIbG9jYQCyaAMAAAX4AAAACG1heHAAFAAAAAAFBAAAAACBuYW1lCpcLaAAABTgAAANkcG9zdCOgAAAABYAAAAAgABAAAAAQAAATrFcGQAAAA=
`);
doc.addFont("Amiri-Regular.ttf", "Amiri", "normal");
doc.setFont("Amiri");
doc.setFontSize(14);
// ✅ استخراج صفوف الجدول من الصفحة
const rows = [...document.querySelectorAll("#items-table tr")].map(tr =>
[...tr.children].map(td => td.textContent.split("").reverse().join(""))
);
// ✅ عنوان التقرير
doc.text("تقرير حساب النقاط الكهربائية".split("").reverse().join(""), 180, 10, { align: "right" });
// ✅ رسم الجدول داخل PDF
doc.autoTable({
head: [["المنتج", "الكمية", "النقاط/وحدة", "المجموع"].map(h => h.split("").reverse().join(""))],
body: rows,
styles: { font: "Amiri", fontStyle: "normal", halign: 'right' },
startY: 20
});
// ✅ الإجمالي الكلي
const grand = document.getElementById("grand-total").textContent;
doc.text(`الإجمالي الكلي: ${grand} نقطة`.split("").reverse().join(""), 180, doc.autoTable.previous.finalY + 15, { align: "right" });
doc.save("نقاط-الكهرباء.pdf");
};
const loadScript = (src) => new Promise((resolve) => {
const s = document.createElement("script");
s.src = src;
s.onload = resolve;
document.head.appendChild(s);
});