Re Method two:
With MigraDoc you can use TextFrames to position items using XY co-ordinates. Textframes can overlap and if you use this method it will be your responsibility to make sure that everything fits into the designated area.
The better way of using MigraDoc would be using tables and/or paragraphs with exact heigths or spacings. This however cannot be used easily with your approach of using XML files with co-ordinates as spacings would have to be relative to the previous item.
You can use PDFsharp to create a PDF file that draws everything at the right places. But printing could then be a problem - you can call Adobe Reader passing command-line arguments to print automatically, but you cannot set sophisticated printer options. If you create only few print jobs and manual intervention is not a problem, this could be an option (and the PDF files allow a visual check of the document before you print it).