Такой трюк с установкой `z-index: -1` работает не всегда.
Во-первых, нужно убрать `transofrm` при его использовании создается новый контекст.
Во-вторых, при таком трюке у родителя не должно быть установлено `z-index` https://codepen.io/Squall88/pen/eYraoxz
Смотрите, svg по своей сути это обычный текст и раз у вас рисование происходит не странице, то у вас есть в html контейнер где уже сгенерирован svg (пользователь же как-то видит результат работы). Ну а дальше, дело техники:
Ну я бы сделал так.
1. По нажатию на кнопку "Cохранить", на сервер отправляются настройки.
2. Сервер на основе настроек формирует нужный html
3. Открываем например безголовым хромом этот html и сохраняем как pdf
В данный момент на проекте для этих нужд использую api для nodejs Puppeteer
Если вы не хотите js, то тут вам придется слегка переверстать, нужно ваш label обернуть в ещё один блок в котором будет label и ссылка. И ссылку чере absolute поставить в нужное место, таким образом нажатие на ссылку, не будет задействовать события checkbox
Таким способом вы подключите только regular шрифт. На сайте google fonts при добавлении шрифта, есть ещё пункт customize где вы можите настроить начертания и т.д.
Вот пример: