Paper wallets give you direct control of your funds and a single private key.
Some wallets have an import private key feature. Check if your Hardware wallet allows importing or sweeping.
What you want to do is sign a transaction for all of the unspent outputs that sends funds to one of the addresses on your Hardware wallet. This is often known as “sweeping”, when you take all available funds under an address and send them to a different address.
Most wallets will sweep funds to itself, as opposed to letting you enter any address to sweep to. Creating a sweep transaction on your own is an advanced technique for programmers and command-line junkies. You should be comfortable creating these types of transactions in a test environment before ever attempting to do so with real sums of money.
There are also tools and libraries available that will help you with this, just be very careful to only use a reputable source — there are many scams that want to steal your private key(s).
Recommendations on this site are strongly discouraged, so here are three (3) external examples that can help you sweep your funds.
Samourai Wallet can sweep funds from private keys and QR codes.
Electrum can sweep keys to any destination address. To sweep private keys, go to the Wallet menu -> Private Keys -> Sweep. Enter the private key in the appropriate field. By default the “Address” field is populated with an address from your existing electrum wallet. Change this to your one of your Hardware wallet addresses.
Sweepkey is an open-source tool I created using the bitcoin-js library for my own usage that sweeps funds from a private key to any specified address (again not a recommendation just an example).
I cannot stress enough, be very careful when interacting with private keys in a hot(online) environment. It is best to never expose them to an online environment, but if you have to, please practice on testnet or with small amounts until you feel comfortable you know what you are doing.