Fix PDF report UTF-8 encoding for residence names and task fields

Add UnicodeTranslatorFromDescriptor to convert UTF-8 strings to
Windows-1252 for gofpdf built-in fonts. Prevents garbled characters
in residence names, task titles, categories, priorities, and statuses.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Trey t
2026-03-09 11:23:44 -05:00
parent 7bd2cbabe9
commit 739b245ee6

View File

@@ -22,6 +22,9 @@ func (s *PDFService) GenerateTasksReportPDF(report *TasksReportResponse) ([]byte
pdf.SetMargins(15, 15, 15)
pdf.AddPage()
// Translate UTF-8 strings to Windows-1252 for built-in fonts
tr := pdf.UnicodeTranslatorFromDescriptor("")
// Header
pdf.SetFont("Arial", "B", 20)
pdf.SetTextColor(51, 51, 51)
@@ -31,7 +34,7 @@ func (s *PDFService) GenerateTasksReportPDF(report *TasksReportResponse) ([]byte
// Residence name
pdf.SetFont("Arial", "", 14)
pdf.SetTextColor(102, 102, 102)
pdf.Cell(0, 8, report.ResidenceName)
pdf.Cell(0, 8, tr(report.ResidenceName))
pdf.Ln(10)
// Generated date
@@ -152,10 +155,10 @@ func (s *PDFService) GenerateTasksReportPDF(report *TasksReportResponse) ([]byte
}
pdf.SetTextColor(51, 51, 51)
pdf.CellFormat(70, 7, title, "1", 0, "L", true, 0, "")
pdf.CellFormat(30, 7, task.Category, "1", 0, "C", true, 0, "")
pdf.CellFormat(25, 7, task.Priority, "1", 0, "C", true, 0, "")
pdf.CellFormat(25, 7, status, "1", 0, "C", true, 0, "")
pdf.CellFormat(70, 7, tr(title), "1", 0, "L", true, 0, "")
pdf.CellFormat(30, 7, tr(task.Category), "1", 0, "C", true, 0, "")
pdf.CellFormat(25, 7, tr(task.Priority), "1", 0, "C", true, 0, "")
pdf.CellFormat(25, 7, tr(status), "1", 0, "C", true, 0, "")
pdf.CellFormat(30, 7, dueDate, "1", 0, "C", true, 0, "")
pdf.Ln(-1)
}
@@ -165,7 +168,7 @@ func (s *PDFService) GenerateTasksReportPDF(report *TasksReportResponse) ([]byte
pdf.SetY(-25)
pdf.SetFont("Arial", "I", 9)
pdf.SetTextColor(128, 128, 128)
pdf.Cell(0, 10, fmt.Sprintf("honeyDue - Tasks Report for %s", report.ResidenceName))
pdf.Cell(0, 10, tr(fmt.Sprintf("honeyDue - Tasks Report for %s", report.ResidenceName)))
pdf.Ln(5)
pdf.Cell(0, 10, fmt.Sprintf("Generated on %s", time.Now().UTC().Format("2006-01-02 15:04:05 UTC")))