The way the professionals print onto canvas is by silk screen printing but it is only suitable for large quantities from a single design (200 plus).
You make a photographic film master for each colour in the design, which these days can be inkjet printed using special ink on transparent film. This is used to expose with UV light a prepared silk screen. When developed you end up with the holes in the silk covered where that colour is not present in the design. You then force ink through the screen onto the canvas to print the first colour. This is then dried and the process repeated for each colour in the design. You normally print the lightest colours first. Where two colours meet, there is an overlapp in case ther is a registration error from one layer to another. This oversizing of the lower layers is all handled by the Publisher version of Cross Stitch Professional. To complicate things further, the colours used often have flourescent dyes added and this affects the covering power and thus the order you need to print the layers. I would not go down this route unless you intend to set up a very large production factory - best to use someone that has been doing it for years. In the UK, try Phoenix designs who will give discounts to users of Cross Stitch Professional - it used to be half price origination charges and 10% off the first print run but check with them for the latest deals. They do them from other software or hand drawings as well but then the masters are drawn by hand using a pentel pen !
The other way for small runs (even one offs) is to inkjet print using special inks onto the canvas. The inks used are fixed by steaming the canvas after printing. You need a large format printer that will take the thickness of the canvas and you must add a backing sheet to the canvas because of the holes. See
http://www.deighton-needleworks.co.uk for a service that can take cross stitch professional design files and produce small quantities.
There are some cheaper possibilities using image transfer technology. You can get dye sublimation inks for Epson inkjet printers. These allow you to print transfers onto paper that can be transfered to fabric using a heat press. The transfer only works on polyester but you can now get polyester starched cotton that works well. Talk to Zeigart about the fabric and
http://www.sawgrassink.com to learn about the transfer process. You can get Aida, Linen and Tapestry canvas in polyester starch. There is also a 100% polyester fabric that is used in pre-printed cross stitch kits but its not nice to work on and you need a press with good heat control to avoid damaging it.
For home users there used to be something called image magic - I don't know if its still around. You take a colour photocopy of the life sized image, coat it with the substance and stick it to the fabric face down. When dry, soak the paper and scrub it off to leave the image on the canvas. Slow and messy but the results are fine. You could probably use a colour laser to print from the program without grid at the appropriate count of fabric rather than using a copier.
Lastly there is a waterslide transfer paper called Lazertran. You colour photocopy onto the paper then dip in water. The thin plastic film slides off onto the canvas. This gives colour over the holes too but you then have to stitch through the plastic over the holes. I haven't tried it but I wondered what would happen if you baked it - maybe it would melt out the holes and bod more securely to the canvas. You can use this material to put pictures onto ceramic tiles by baking them after the transfer - but I think polyester coated tiles and sublimation transfer is easier !