Поскольку разные принтеры могут вести себя немного по-разному, первый шаг, который я хотел бы сделать, - это создать PDF с использованием встроенных в CF инструментов PDF.
Если статический текст короткий и простой, вам может не понравиться использование заголовка страницы, который сделает это автоматически. Поиграйте с этим, прежде чем смотреть на что-то более сложное, но имейте в виду, что (IIRC) вы не можете стилизовать заголовки страниц.
Далее я бы выяснил, сколько товаров умещается на странице. Если продукт может занимать переменное пространство, у вас есть выбор. Вы можете поместить каждый в div статического размера, достаточно большой, чтобы вместить самый большой продукт. Вы можете сделать div достаточно большим для других продуктов и использовать свойство overflow CSS, чтобы скрыть список больших продуктов. Вы можете использовать простой список и надеяться, что он не переполнится. : -)
Между этими разделами страницы используйте атрибуты разрыва страницы CSS (например, page = break-before и page-break-after), чтобы принудительно разрывать страницы там, где вы хотите. Обратите внимание, что они не могут предотвратить разрыв страницы, только принудительный, поэтому я бы использовал один из первых двух предложенных мной способов, чтобы убедиться, что вы не переполняете свою страницу.