Ja geht alles 3. Direkt in das PDF einzubinden ist aber nicht logisch, das würde ja dann aufgerufen werden wenn die seite lädt. Also besser mit JS auf dieses Script zeigen. Oder mit Ajax und einem eigenen Controller darauf zeigen.
Als Tip: wenn du im css @media print{ } den druckbereich einschränkst und window.print() nimmst, kannst du dir die große Programmierung sparen. Ggf gibts noch print to pdf libraries.