I would look at the prices for the items, determine what the total cost would be, and get them a Disney Gift Card to cover the amount with specific instructions (and perhaps pictures?) as to what you intend the gift to cover. They can then apply the gift card to their onboard account once onboard. You could also try to apply additional OBC to their account in advance of their cruise, but you would need access to their reservation information (and
travel agent if applicable.) That's not too hard if you're all linked together, but could be difficult if you aren't booked together. If you are linked, or if you have their reservation number and information, you should be able to contact
DCL or your travel agent (if applicable) to apply money to their onboard account.
They'll want to make the Palo reservation in advance, but won't have to pay anything until they've eaten at Palo and have the cost charged to their onboard account. You can't make a reservation in advance just for your inlaws without including someone in your stateroom on the reservation and burning your chance to book the same meal type.
I don't think the rainforest room has to be booked in advance, and like Palo, you aren't charged until you're actually onboard. But I've never looked for it on the gift site either.
There are significant disadvantages to booking a photo credit package in advance versus doing it while onboard, and the cost is the same, so I'd really advise against purchasing a photo package for them as a gift via the DCL website and go the giftcard or OBC route instead.