I think you'd be better off designing your layout so that it is a list view layout based on your portal's table rather than the quote table. That takes care of your itemization list varying in length. You can still pull data from your Quote table and place that data in a header and a footer. If you look at the invoices starter solution, you'll see that's how it prints an invoice.
For your opening and closing paragraphs, use leading and trailing summary parts with a text field sized to the maxium practical size, then set them to "slide up" "resize" enclosing part.
To print a quote, you'd use a script from your Quote layout that uses either Go To Related Records or performs a find to pull up just the item records for your current quote.
Key facts about sliding objects:
- It's only visible in preview mode and when you print/save as PDF...
- All layout objects below and in the same layout part as the slide/resize field need to also be set to slide up and resize.
- Objects in headers and footers will not slide.
- Portals will shrink/slide to fit the number of rows of records, but fields within the portal row will not shrink/slide.
- Consistent side borders are difficult to achieve with sliding fields.