With some extra components and my inpout32.dll, you get one! Almost:
Perfect for serial microcontroller programming equipment, solves the chicken-or-egg problem.
However, forget using the IEEE1284 Negotiation for your data input! It will definitely introduce more trouble than you ever expect. If you really need a higher data input rate, forget using your USB→ParallelPrinter adapter for that purpose.
Pin numbers are for D-Sub 25, not for the 36-pin Centronics printer connector!
In case of older bi-polar ICs (74LS), the IC must be powered externally. But even for CMOS, you should consider external powering when available.
The schematic above draws power from INIT pin.
Some applications need other output or input lines, so, once building an adapter with the flipflop IC, one can swap the lines between the two sides. But that requires some more virtualization inside inpout32.dll, which is currently not implemented.
More complex circuitry at the output of your USB ParallelPrinter converter may enable more output (12) and input (5) lines but needs a very specialized build of inpout32.dll for parallel-port virtualization.
Ask me if you need support in this case!
The added CMOS flipflops parallelize one serial input onto three parallel lines. This will boost bit-serial devices by factor 3. Sounds not much, but it's still worth to implement for some cases.
The majority of chip programmers I've seen uses BUSY for serial read data. Therefore I choosed that pin for de-serializing. Examples:
Negative examples are there too:
[Details and thoughts are explained on German page.]
The circuitry fits into a dongle-style shell.
Keep the parallel port wires as short as possible! In case of more distance needed, prefer extending the USB wire.