The problem is that you are putting everything inside single BlockUIContainer. DocumentPaginator has trouble in paginating the BlockUIContainer i.e. splitting it into multiple pages. If your UI is static you can use multiple BlockUIContainers to wrap your UI. i.e.
<BlockUIContainer>
<Grid Name="grid_principale">
<!-- Grid content here -->
</Grid>
</BlockUIContainer>
<BlockUIContainer>
<Grid Name="grid_principale2">
<!-- Grid content here -->
</Grid>
</BlockUIContainer>
This will generate multiple pages. Also you will have to set your FlowDocument.PageHeight before printing.