To be honest, the PDF generation part in M2 is not as "well designed" as the other parts of the system. Because of that, you need to override a plenty of code to change different parts of an invoice. The invoice rendering process based on the coordinates pointer that goes from the beginning to the end of a page and draws the elements. So, the modifications and adjustments should be inserted into the original code in order to keep the correct pointer position. It's difficult (but possible) to calculate the exact coordinates of most of the elements because many of them have dynamic sizes (logo, etc).
That's why it's hard to use plugins, observers and other flexible solutions here.
Anyway, if you are fine with that fact, here you can find the example of mine https://github.com/rogyar/M2-Invoice-PDF-Modification. The extension makes the changes mentioned in the question description. You can play with the positions, sizes. I've commented the corresponding parts of the code where you can change the positions.
Hope it will help.