Smaller Strings in Printable ASCII base
05AB1E, 11 bytes
-1 byte thanks to @KevinCruijssen
gžQ×æêéI¡н

Try it online!
TIO link is for &quot;abcd&quot; instead of printable ascii since powerset of len(input) printable ascii takes a while to compute...

Explanation
gžQ×                 - repeat printable ascii length of the input times
    æ                - get the powerset of this string 
     êé              - sort and uniquify lexicographically then sort by length
       I¡            - split on the input
         н           - and take the elements that are before it
                     - output these implicitly