Sözden Notaya

Şarkı sözlerinizi girin — görsel nota çizgisine dönüştürün

Şarkı Sözleri
Görsel Nota
𝄞

Sözleri girin ve "Notaya Çevir" butonuna basın

'); win.document.close(); setTimeout(function () { win.focus(); win.print(); }, 600); };/* SVG elementini canvas'a çizen yardımcı (Blob URL → Image → drawImage) */ function svgToCanvas(svgEl, canvasW, canvasH) { return new Promise(function(resolve, reject) { /* SVG'yi serialize et, eksik namespace ekle */ var serialized = new XMLSerializer().serializeToString(svgEl); if (serialized.indexOf('xmlns=') === -1) { serialized = serialized.replace(' div'); if (!pages.length) { alert('Önce notayı oluşturun.'); return; }var btn = document.getElementById('stn-pdf-btn'); btn.classList.add('loading'); btn.disabled = true;try { var { jsPDF } = window.jspdf; var pdf = new jsPDF({ orientation:'portrait', unit:'mm', format:'a4' }); var pageW = pdf.internal.pageSize.getWidth(); /* 210 mm */ var pageH = pdf.internal.pageSize.getHeight(); /* 297 mm */ var DPI = 2; /* 2× retina */for (var pi = 0; pi < pages.length; pi++) { /* Her A4 div için ana canvas */ var master = document.createElement('canvas'); master.width = A4_W * DPI; master.height = A4_H * DPI; var mCtx = master.getContext('2d'); mCtx.fillStyle = '#ffffff'; mCtx.fillRect(0, 0, master.width, master.height); mCtx.scale(DPI, DPI);/* Başlık (sadece ilk sayfa) */ if (pi === 0) { mCtx.font = '300 18px Georgia,serif'; mCtx.fillStyle = '#1c1917'; mCtx.fillText('𝄞 Nota', A4_MARGIN, 34); var metaEl2 = document.getElementById('stn-page-meta'); if (metaEl2 && metaEl2.textContent) { mCtx.font = '400 10px sans-serif'; mCtx.fillStyle = '#a8a29e'; mCtx.fillText(metaEl2.textContent, A4_MARGIN, 48); } /* ince çizgi */ mCtx.strokeStyle = 'rgba(28,25,23,.12)'; mCtx.lineWidth = 0.5; mCtx.beginPath(); mCtx.moveTo(A4_MARGIN, 56); mCtx.lineTo(A4_W - A4_MARGIN, 56); mCtx.stroke(); }/* Filigran */ mCtx.save(); mCtx.font = '300 22px Georgia,serif'; mCtx.fillStyle = 'rgba(180,83,9,0.07)'; mCtx.textAlign = 'center'; mCtx.textBaseline = 'middle'; var cols2 = 4, rows3 = 8; var cw2 = A4_W / cols2, ch2 = A4_H / rows3; for (var r3 = 0; r3 < rows3; r3++) { for (var c3 = 0; c3 < cols2; c3++) { var cx2 = cw2 * c3 + cw2 / 2; var cy2 = ch2 * r3 + ch2 / 2; mCtx.save(); mCtx.translate(cx2, cy2); mCtx.rotate(-35 * Math.PI / 180); mCtx.fillText('Notaevi.Net', 0, 0); mCtx.restore(); } } mCtx.restore();/* SVG'leri sırayla çiz */ var svgs = pages[pi].querySelectorAll('svg'); for (var si = 0; si < svgs.length; si++) { try { var svgC = await svgToCanvas(svgs[si], A4_W * DPI, A4_H * DPI); /* DPI scale zaten uygulandı, 1:1 çiz ama boyutu yarıya indir */ mCtx.save(); mCtx.scale(1 / DPI, 1 / DPI); mCtx.drawImage(svgC, 0, 0); mCtx.restore(); } catch(e) { /* devam et */ } }/* Sayfa numarası */ if (pages.length > 1) { mCtx.font = '400 10px Georgia,serif'; mCtx.fillStyle = '#a8a29e'; mCtx.textAlign = 'right'; mCtx.textBaseline = 'alphabetic'; mCtx.fillText((pi + 1) + ' / ' + pages.length, A4_W - A4_MARGIN, A4_H - 16); }var imgData = master.toDataURL('image/png'); if (pi > 0) pdf.addPage(); pdf.addImage(imgData, 'PNG', 0, 0, pageW, pageH); }/* Sözler sayfası */ var lyrics = document.getElementById('stn-lyric-strip').textContent || ''; if (lyrics) { pdf.addPage(); var lm = 15, ly = lm + 10; pdf.setFont('helvetica','normal'); pdf.setFontSize(11); pdf.setTextColor(100,95,90); pdf.text('Sarkı Sozleri', lm, ly); ly += 8; pdf.setDrawColor(200,195,190); pdf.setLineWidth(0.3); pdf.line(lm, ly, pageW - lm, ly); ly += 6; pdf.setFontSize(9); pdf.setTextColor(70,65,60); var lines = pdf.splitTextToSize(lyrics, pageW - lm * 2); lines.forEach(function(line) { if (ly > pageH - lm) { pdf.addPage(); ly = lm; } pdf.text(line, lm, ly); ly += 5; }); }pdf.save('nota.pdf');} catch(err) { console.error('PDF hatası:', err); alert('PDF oluşturulurken bir hata oluştu:\n' + err.message); } finally { btn.classList.remove('loading'); btn.disabled = false; } };}());