PDF :: API2 обладает множеством функциональных возможностей, но чрезвычайно эзотеричен. Я обнаружил, что документация очень сложна для получения необходимой информации. Вы должны получить все «правильно», чтобы PDF-файл отображался правильно, и, как будто ваши требования меняются, он имеет тенденцию оказывать каскадный эффект на ваш существующий код, чтобы все хорошо сочеталось. Например, вставка одного элемента в определенном месте может означать, что вам необходимо пересчитать позиции всех других элементов, отображаемых на этой странице, с точностью до одной точки, в зависимости от того, как вы используете API.
В результате мы довольно недавно отказались от решения, в котором использовался PDF :: API2, и вместо этого начали генерировать HTML, который мы затем преобразовали в PDF с помощью внешнего инструмента. Есть несколько хороших бесплатных, например PDF :: FromHTML в соответствии с предложением Синан Юнюр. Есть и другие, более многофункциональные коммерческие, если вы хотите, чтобы ваш HTML увлекся и хорошо перевел его в PDF (хотя я не использовал их лично).
Если вам нужно сделать несколько простых манипуляций с существующими PDF-файлами, а не генерировать их, я бы использовал (и использую) CAM :: PDF .
Короче говоря, я не рекомендую PDF :: API2, если вы не готовы тратить много времени на выяснение всех его тонкостей и личную поддержку вашего приложения в будущем. Он чрезвычайно мощный и многофункциональный, но если вы точно не знаете, что делаете, отсутствие документации и примеров помешает вам больше, чем помогает модуль.