Improve PDF schedule layout for better readability and alignment

Adjust PDF rendering to ensure all meeting details (number, title, attendees, time) are contained within a single row, improve vertical alignment to the top, and set correct text alignment for RTL content.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 77cfe984-2c65-4152-bb7a-0df28274fe66
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 5cba573f-cf8f-4641-b2db-92b5b87be569
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/c3c252e4-c83d-40ca-9fff-99a3ea60701e/77cfe984-2c65-4152-bb7a-0df28274fe66/Zh9QhRk
Replit-Helium-Checkpoint-Created: true
This commit is contained in:
riyadhafraa
2026-05-04 09:59:03 +00:00
parent 0114ad86d0
commit 328d867975
2 changed files with 108 additions and 6 deletions
+4 -6
View File
@@ -815,7 +815,7 @@ export async function renderSchedulePdf(input: RenderPdfInput): Promise<Buffer>
const headerWidths = isRtl ? [...colWidths].reverse() : colWidths;
const cellPadX = 4;
const cellPadY = 0;
const cellPadY = 2;
const lineHeight = input.font.fontSize * 1.05;
function drawHeader(): number {
@@ -862,7 +862,7 @@ export async function renderSchedulePdf(input: RenderPdfInput): Promise<Buffer>
{
text: htmlToPlain(isRtl ? meeting.titleAr : meeting.titleEn || meeting.titleAr) +
(meeting.location ? `\n${meeting.location}` : ""),
align: "center",
align: isRtl ? "right" : "left",
},
{
text:
@@ -896,7 +896,7 @@ export async function renderSchedulePdf(input: RenderPdfInput): Promise<Buffer>
flushGroup();
return parts.join("\n");
})(),
align: "center",
align: isRtl ? "right" : "left",
},
{
text: formatTimeRange(meeting.startTime, meeting.endTime, input.lang),
@@ -992,9 +992,7 @@ export async function renderSchedulePdf(input: RenderPdfInput): Promise<Buffer>
const c = cells[i];
const cellW = widths[i] - cellPadX * 2;
const textLines = c.text.split("\n");
const contentH = cellHeights[i] - cellPadY * 2;
const vOffset = Math.max(0, (rowHeight - cellPadY * 2 - contentH) / 2);
let y = rowTop + cellPadY + vOffset;
let y = rowTop + cellPadY;
for (const tl of textLines) {
if (y >= rowBottom) break;
if (!tl) { y += lineHeight; continue; }