The way I approached these requirements was to have a simple custom list to facilitate assignment by the compliance officer and a workflow to create an item in a task list assigned to the end user.
The Compliance Officer creates a new item in the Assign Policy or Training list. This element consists of a selection of people (to choose which employees must confirm that they have read the materials) and a selection column with check boxes for which materials to read and confirm (for each of the different policies that require active responses different departments receive different training tasks and guidelines).
A workflow is triggered for this new element creation in the assignment list, creating a task for each user whose type (s) corresponds to what was checked off as needed. The workflow then sends each user an email with the conformance text telling the user what to do (follow this link, read the text, confirm the read).
The link will take you to the custom edit order form that has embedded the relevant materials (PDF file, video tutorial, etc.) and ends with a checkbox labeled "I've read and understood RequiredPolicyThing."
The Legal Department wanted a checkbox that prompts the user active Confirm that you have received and read the policy – count it as readable when you click on the link, without indicating that the link even worked for you (you may have had a browser issue with the PDF Embedding blocked?) Would not have met the legal requirements.
This was pretty easy to set up – and I've got a list of each user, the time he's been assigned, the timestamp he's confirmed, and a checkbox that indicates he's actively approved the policy. A simple view informs the compliance officer who did not complete it, and I've even pasted an overdue view (creation date plus X days and not filled in) for easy tracking.