Update on Rich text images
Here is the problem unless stored as a document with externally available flag, I do not think you can permit the image to be displayed on a word document.
Read this doc on why static resource images cannot be accessed in a template:
https://help.salesforce.com/apex/HTViewSolution?urlname=Why-images-stored-as-static-resources-cannot-be-seen-in-emails-sent-using-VF-email-templates-1327108316482&language=en_US
The only crazy solution I can think of is
1) Ask the user to upload the image for the rich text field as attachment on the parent object.
2) create a long text field on the parent object ( kill the rich text field) where the user can add his / her comments related to the image.
2) Create a trigger on attachment object which saves the image into a document
3) Once the image is saved as Doc take the doc id that got created and update it on the parent object using a field that is not editable and do not add to the page layout. ( If you have to add multiple images to your template, you may have to do more nasty coding )
4) On your vf page do
Here is a solution that I developed using the advice from these blogs
http://eplatypus.blogspot.com/2012/01/visualforce-to-word.html
https://theviewfromouthere.wordpress.com/2009/10/08/turning-a-visualforce-page-into-a-word-document/
Instead of loading the image into a static resource I loaded it into the document and make sure Externally Available Image is checked.
My page tag:
<apex:page standardController="opportunity" contentType="application/msword#mydoc.doc" applyHtmlTag="false" showHeader="false" cache="true" readOnly="true" >
I used the following syntax for rendering the image
<img src="https://c.**yourinstance**.content.force.com/servlet/servlet.ImageServer?id=docId&oid=OrgID" />
You can get the above URL by
My word file output :
This seems to be working in my org when using ImageServer instead of FileDownload. I also have the instance stuff stripped out from the start using a relative URL (may not be necessary).
As an example, I tested a URL field with this value:
/servlet/servlet.ImageServer?id=015F0000003oBk4&oid=00DF00000006hty
And a Formula field with this value:
IMAGE(Photo_URL__c, "Test", 300, 100)
This is working in my community in Salesforce1 as well as the standard desktop environments. Don't forget to include both image ID and org ID when using ImageServer!
Best Answer
An easier approach would be to use Chatter Files.
When you upload a file to chatter, you have an option to
Share via Link
. That link is publically available.E.g. the 2 links below are from my Dev Org.
Word Document
PDF Document
An added advantage is that you can preview the file before downloading.