So, to store in the database, use a "raw data" field (sr*) in the model. CHeck out whichever database you use for the mapped field type, and how best to store that kind of data (in SQL server for example, there is the option of filestream)
Store in the database by using fileload/raw (lfileload/raw), to populate this field and then store the entity.
We don't use the uniface reports to print, but I think they'll have the same issues that crystal reports does, in that the PDF won't print, or will only print the first page.
If you look for ghostscript online, you'll find an executable that will allow you to convert the PDF into a series of images (tiff, jpeg, you choose), which you can then re-load into the report as a dummy entity using fileload/image, which will allow you to include these 'pages' alongside your invoice.
So your report code save the file from the database to a temporary location, runs the ghostscript executable to chop it up into images for each page, loads those images back into dummy fields in a dummy entity (one occ per page), runs the print, and then deletes the temporary files.... simple, no?
I can (maybe) give some hints what the various loops and command lines look like if you want.