Hey Kevin, the standard pattern for this is to add a button in a User Event's beforeLoad entry point, that button should either call a client script function which itself calls a suitelet that prints, or the button should just call the suitelet directly (see
Add Custom Button to Execute a Suitelet)
Then use the N/render module to render the record/transaction/whatever using your Advanced PDF Template