diff --git a/svc/routes/pdf_assets.go b/svc/routes/pdf_assets.go index 37d441e..43a3a4c 100644 --- a/svc/routes/pdf_assets.go +++ b/svc/routes/pdf_assets.go @@ -88,20 +88,42 @@ func resolveAssetPath(fileName string, relativeDirs []string) (string, error) { } func registerDejavuFonts(pdf *gofpdf.Fpdf, regularFamily, boldFamily string) error { - regularFont, err := resolvePdfAssetPath("DejaVuSans.ttf") - if err != nil { - return err - } - boldFont, err := resolvePdfAssetPath("DejaVuSans-Bold.ttf") + + regPath, err := resolvePdfAssetPath("DejaVuSans.ttf") if err != nil { return err } - pdf.AddUTF8Font(regularFamily, "", regularFont) - pdf.AddUTF8Font(boldFamily, "", boldFont) - - if err := pdf.Error(); err != nil { - return fmt.Errorf("font init failed: %w", err) + boldPath, err := resolvePdfAssetPath("DejaVuSans-Bold.ttf") + if err != nil { + return err } + + // Load fonts from bytes + pdf.AddUTF8FontFromBytes( + regularFamily, + "", + mustReadFile(regPath), + ) + + pdf.AddUTF8FontFromBytes( + boldFamily, + "B", + mustReadFile(boldPath), + ) + + // Check internal PDF error + if pdf.Error() != nil { + return fmt.Errorf("font init failed: %w", pdf.Error()) + } + return nil } + +func mustReadFile(path string) []byte { + b, err := os.ReadFile(path) + if err != nil { + panic("FONT READ ERROR: " + err.Error()) + } + return b +}