Есть два пути. Простой:
Делать страничку с версией для печати и вызывать window.print(). Chrome,ie etc предлагают печатать в PDF. Главное чтобы версия для печати была опрятной. Это простой путь.
Сложный: нарисовать PDF при помощи js.
https://github.com/MrRio/jsPDF
Логика очень схожа с логикой работы с canvas. Поэтому можно рисовать что-уже сложное, но затратно по времени. Мы как то делали отчёты в PDF - много времени ушло на прорисовку табличек таким образом.