the htmltopdf.js library renders all PDF text as images instead of
vectors, and Go does not have a reliable native library for generating
PDFs that is actively maintained. The best solution appears to be to
make a system call to wkhtmltopdf, but now there is a hidden package
dependency that is not checked at build time and exists in another
process. Maybe in the future a C library can be used and linked with the
Go binary.
Since request.Body can only be read once, calling patchUser from
patchSelf always returned an error. request.Body needed to be either be
saved in a variable and reset or have a new function created.
Uses gift package for server side resizing of selected letterhead
file. It should fit an image file with aspect ratio of 2:1 and be a
reasonable size. A 400x200 resizeToFit is used for now.
gift just uses the native image/draw package internally.
https://pkg.go.dev/image/draw