Readability Test for Different Audiences

Readability Test for Different Audiences

Ensure your message is clear for your intended audience by analyzing its readability.

${audience.desc}

`; elements.audienceResults.innerHTML += cardHTML; }); elements.resultsSection.classList.remove('hidden'); }; const handleDownloadPdf = () => { const { jsPDF } = window.jspdf; if (!jsPDF || !analysisResults.stats) { return; } const doc = new jsPDF({ orientation: 'portrait', unit: 'in', format: 'letter' }); const { stats, originalText } = analysisResults; const margin = 0.75; const pageWidth = doc.internal.pageSize.getWidth(); let currentY = 0; // PDF Header doc.setFillColor('#4338ca'); // indigo-700 doc.rect(0, 0, pageWidth, 1.6, 'F'); doc.setFont('helvetica', 'bold'); doc.setFontSize(22); doc.setTextColor('#ffffff'); doc.text('Readability Audit', margin, 0.9); doc.setFontSize(11); doc.setTextColor('#e0e7ff'); // indigo-100 doc.text(`Analysis based on the Flesch-Kincaid Grade Level metric.`, margin, 1.2); currentY = 2.2; // Overall Score Section doc.setFont('helvetica', 'bold'); doc.setFontSize(12); doc.setTextColor('#1f2937'); doc.text('OVERALL SCORE', margin, currentY); doc.setDrawColor('#e5e7eb'); doc.line(margin, currentY + 0.05, pageWidth - margin, currentY + 0.05); currentY += 0.4; doc.setFont('helvetica', 'bold'); doc.setFontSize(48); doc.setTextColor('#4f46e5'); doc.text(stats.grade.toString(), margin, currentY + 0.3); doc.setFont('helvetica', 'normal'); doc.setFontSize(11); doc.setTextColor('#374151'); const interpretation = getInterpretation(stats.grade); doc.text(interpretation, margin + 1.5, currentY + 0.2); currentY += 1.0; // Audience Suitability Table doc.setFont('helvetica', 'bold'); doc.setFontSize(12); doc.setTextColor('#1f2937'); doc.text('AUDIENCE SUITABILITY', margin, currentY); doc.line(margin, currentY + 0.05, pageWidth - margin, currentY + 0.05); currentY += 0.3; const tableHeader = [['Audience Profile', 'Required Level', 'Assessment']]; const tableBody = audiences.map(aud => { const suitable = stats.grade <= aud.level; return [aud.name, `< ${aud.level}.0`, suitable ? 'SUITABLE' : 'TOO COMPLEX']; }); const startX = margin; const colWidths = [2.5, 1.5, 2.0]; doc.setFont('helvetica', 'bold'); doc.setFontSize(10); doc.setTextColor('#4b5563'); doc.text(tableHeader[0][0], startX, currentY); doc.text(tableHeader[0][1], startX + colWidths[0], currentY); doc.text(tableHeader[0][2], startX + colWidths[0] + colWidths[1], currentY); currentY += 0.1; doc.setDrawColor('#d1d5db'); doc.line(margin, currentY, pageWidth - margin, currentY); currentY += 0.2; doc.setFont('helvetica', 'normal'); doc.setFontSize(10); tableBody.forEach(row => { doc.setTextColor('#1f2937'); doc.text(row[0], startX, currentY); doc.text(row[1], startX + colWidths[0], currentY); doc.setTextColor(row[2] === 'SUITABLE' ? '#166534' : '#991b1b'); doc.text(row[2], startX + colWidths[0] + colWidths[1], currentY); currentY += 0.25; }); // Original Text if (currentY > 8) { doc.addPage(); currentY = margin; } else { currentY += 0.5; } doc.setFont('helvetica', 'bold'); doc.setFontSize(12); doc.setTextColor('#1f2937'); doc.text('ORIGINAL TEXT', margin, currentY); doc.line(margin, currentY + 0.05, pageWidth - margin, currentY + 0.05); currentY += 0.3; doc.setFont('times', 'normal'); doc.setFontSize(10); doc.setTextColor('#4b5563'); const textLines = doc.splitTextToSize(originalText, pageWidth - margin * 2); doc.text(textLines, margin, currentY); doc.save('Readability-Audit.pdf'); }; elements.analyzeTextBtn.addEventListener('click', analyzeText); elements.downloadPdfBtn.addEventListener('click', handleDownloadPdf); });
Scroll to Top