A method for printing in which print data is first generated by receiving compressed page data having a layer of continuous tone data and a layer of bi-level data; decompressing the continuous tone data and the bi-level data in parallel processes; halftoning the continuous tone data; and compositing the bi-level data over the continuous tone data. The print data is then provided to a print engine controller for printing onto a substrate.