HTML5 client is based on pure HTML/JavaScript without any extra plugins and like any other HTML page that you open in browser it is restricted by security rules of browser you use. You get feeling that you use "native" client but that is just simulated visualization, you still stay inside browsers sand-box.
Now imagine you, every HTML page that you visit in internet would get full access to your local drives, local printers, local scanners or any other local hardware but fortunatelly this horror scenario is not possible (at least not without reusing browser vulnerabilities or third part plugins but not of our interests)

In short - there are no such official browser APIs existing that would allow unrestricted access to your local hardware such as local printers, local scanners, local logical devices or any other physical hardware like USB devices through HTML5 client. (local means the system where you run browser that starts HTML5 session)
If you want to get logical access to your hardware you need native clients such as RemoteApp or Generated clients that do not rely on browsers but have almost unrestricted access to local hardware.

Notice, even if local drive access is not possible with browsers, file upload is still possible but on indirect way, as example just drop files to browser HTML5 session tab for uploading files to rdp server session or use upload form. For sending files back to your browser for example drop files to network drive //tsclient/WebFile or use file upload tool, files will popup as regular file downloads.
More about you will find under the link:

Since local printers can not be accessed directly the printer gets emulated so the print to such emulated printer gets converted to pdf file that finally gets uploaded to browser and may be then printed to your local printer, however that requires browser with native pdf support or support via pdf plugin.