You should publish the full PDF file contents as raw binary data in a stream, and then the blockchain will store all elements in that PDF, including graphics, etc...
The easiest way to do this is to create a binary cache item, then copy the PDF file into the on-disk file for that cache item, then publish the cache item using the APIs using the {"cache":"..."} format.
For retrieval you'll need to use the gettxoutdata command for now, but we'll soon add an API to retrieve data from the blockchain into the binary cache, from where you can directly copy the data out.