1) верстаете отдельный шаблон в сантиметрах, задаете размер страницы А4, задаете все цсс для
@print
как необходимо и далее сохраняете в html.
2)
exec('google-chrome --headless --no-sandbox --disable-gpu --print-to-pdf=путь_К_Пдф.pdf --no-margins путь_где_брать_хтмл.html --virtual-time-budget=5000 >куда_писать_лог.log 2>&1');
если верстка будет правильной, все ляжет один в один с обычным выводом на печать из хрома, за исключением шрифтов, там есть нюансы зависящие от ОС.