I think using freereport or lazreport will render throught gdi.
Maybe on windows, but lazreport is definitely cross platform. No issue there.
By saying GDI i would say graphical, my apologies.
I've already try to print labels on a zebra printer with canvas... so slow !!
with this kind of hardware, direct print is the best way.
You can print RAW data directly to the printer using the printer class (I forget that) instead of using win api directly so it should be crossplatform