Using IPFS is almost definitely the right approach, as writing data to the blockchain is usually prohibitively expensive. Having stored the data in IPFS and got the hash back, you can read the data using
You may want to post another question with your specific IPFS problem if you can't figure it out.
If you want to put a document in storage, you can convert it to bytes then store the bytes on the blockchain, but you don't want to do this.
Putting documents in the event logs may be somewhat less impossible, but don't. Use IPFS.