Problem Sending my FlowDocument to the Printer

Marino Liranzo 81 Reputation points
2023-07-16T18:39:18.4933333+00:00

Hello,

I have a FlowDocumentScrollViewer control in my project, in this I have a FlowDocument in this I have five BlockUIContainers, each of these BlockUIContainers houses a table of values created by ListView controls, prior to each block I have the respective headers. All my content is displayed as expected, however when sending it to print two problems occur, the first problem is each header appears only on one page, that is, then a single page of each listView is printed.

In short, the first header is printed, jumps to the next page and prints the first page of the first listView, the second header is printed, jumps to the next page and prints the first page of the second listView and so on.

I would greatly appreciate your help.

<Window x:Class="AnalisisMamposteriaWPF.frmPrintDocument" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:AnalisisMamposteriaWPF" mc:Ignorable="d" Title="Resultados Diseño a Imprimir" Height="860" Width="760">
    <Window.Resources>
        <DataTemplate x:Key="MyDataTemplate">
            <Border BorderBrush="#FF000000" BorderThickness="1,1,0,0" Margin="-6,-2,-6,-2">
                <StackPanel Margin="6,2,6,2">
                    <TextBlock Text="{Binding MySpecialBinding}" /> </StackPanel>
            </Border>
        </DataTemplate>
        <Style x:Key="MyItemContainerStyle" TargetType="{x:Type ListViewItem}">
        <Setter Property="HorizontalContentAlignment" Value="Right" /> <Setter Property="VerticalContentAlignment" Value="Stretch" />
        </Style>
        <Style x:Key="GroupHeaderStyle" TargetType="{x:Type GroupItem}">
        <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type GroupItem}"> <StackPanel> <TextBlock Text="{Binding Nivel}"/> <ItemsPresenter/> </StackPanel> </ControlTemplate> </Setter.Value> </Setter>
        </Style>
    </Window.Resources>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="Auto" /> </Grid.RowDefinitions>
        <FlowDocumentScrollViewer Grid.Row="0" Name="fdpv">
            <FlowDocument Name="flowDocument" PageHeight="Auto" PageWidth="Auto">
                <Section>
                    <Paragraph>
                        <Floater HorizontalAlignment="Left" Width="80">
                            <BlockUIContainer>
                                <Image Source="C:/Users/Marin/source/repos/AnalisisMamposteriaWPF/Imagenes 24/Edificio.bmp" /> </BlockUIContainer>
                        </Floater>
                        <Run FontSize="16" FontFamily="Impact" Foreground="Brown">Adimha v2.50 Pro</Run>
                        <Run FontSize="13" FontFamily="Calibri">Análisis y Diseño de Muros de Mampostería Armada y Hormigón Armado</Run>
                    </Paragraph>
                    <Table CellSpacing="0">
                        <Table.Columns>
                            <TableColumn Width="55" />
                            <TableColumn Width="240" />
                            <TableColumn Width="60" />
                            <TableColumn Width="90" /> </Table.Columns>
                        <TableRowGroup>
                            <TableRow>
                                <TableCell>
                                    <Paragraph FontSize="12">Proyecto:</Paragraph>
                                </TableCell>
                                <TableCell>
                                    <Paragraph TextAlignment="Left">
                                        <Label Height="22" Name="proName" Content="{Binding Path = ProjectName}" FontSize="12" VerticalAlignment="Center"></Label>
                                    </Paragraph>
                                </TableCell>
                                <TableCell>
                                    <Paragraph TextAlignment="Left" FontSize="12">Ingeniero:</Paragraph>
                                </TableCell>
                                <TableCell>
                                    <Paragraph TextAlignment="Left">
                                        <Label Height="22" Name="EstrName" Content="{Binding Path = Estructuralis}" FontSize="12" VerticalAlignment="Center"></Label>
                                    </Paragraph>
                                </TableCell>
                            </TableRow>
                        </TableRowGroup>
                        <TableRowGroup>
                            <TableRow>
                                <TableCell>
                                    <Paragraph FontSize="12">Cliente :</Paragraph>
                                </TableCell>
                                <TableCell>
                                    <Paragraph TextAlignment="Left">
                                        <Label Height="22" Name="CliName" Content="{Binding Path = Cliente}" FontSize="12" VerticalAlignment="Center"></Label>
                                    </Paragraph>
                                </TableCell>
                                <TableCell>
                                    <Paragraph TextAlignment="Left" FontSize="12">Código:</Paragraph>
                                </TableCell>
                                <TableCell>
                                    <Paragraph TextAlignment="Left">
                                        <Label Height="22" Name="CodeName" Content="{Binding Path = TraCode}" FontSize="12" HorizontalAlignment="Center"></Label>
                                    </Paragraph>
                                </TableCell>
                            </TableRow>
                        </TableRowGroup>
                    </Table>
                    <Paragraph TextAlignment="Center" FontWeight="Bold" FontSize="12">DATOS PARA EL DISEÑO</Paragraph>
                    <BlockUIContainer>
                        <ListView Name="lstView" FontFamily="Calibri" FontSize="12" Background="Transparent" BorderThickness="1" ItemContainerStyle="{DynamicResource MyItemContainerStyle}">
                            <ListView.View>
                                <GridView>
                                    <GridViewColumn Header="Muro#" DisplayMemberBinding="{Binding Elemento}" Width="50" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Franja#" DisplayMemberBinding="{Binding Franja}" Width="50" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Nivel" DisplayMemberBinding="{Binding Nivel}" Width="52" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Long(m)" DisplayMemberBinding="{Binding Long, StringFormat='F2'}" Width="62" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Esp(m)" DisplayMemberBinding="{Binding Esp, StringFormat='F2'}" Width="63" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Alt(m)" DisplayMemberBinding="{Binding Altura, StringFormat='F2'}" Width="58" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="f'm(kg/c2)" DisplayMemberBinding="{Binding FM, StringFormat='F2'}" Width="75" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Em(kg/c2)" DisplayMemberBinding="{Binding Em, StringFormat='F2'}" Width="72" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Ev(kg/c2)" DisplayMemberBinding="{Binding Ev, StringFormat='F2'}" Width="72" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="V(to/m3)" DisplayMemberBinding="{Binding VD, StringFormat='F3'}" Width="70" CellTemplate="{DynamicResource MyDataTemplate}" /> </GridView>
                            </ListView.View>
                            <ListView.GroupStyle>
                                <GroupStyle>
                                    <GroupStyle.HeaderTemplate>
                                        <DataTemplate>
                                            <TextBlock FontWeight="Bold" FontSize="14" Text="{Binding Elemento}" /> </DataTemplate>
                                    </GroupStyle.HeaderTemplate>
                                </GroupStyle>
                            </ListView.GroupStyle>
                        </ListView>
                    </BlockUIContainer>
                    <!--<Paragraph TextAlignment="Center" FontSize="12"></Paragraph>                 <Paragraph TextAlignment="Center" FontSize="12"></Paragraph>-->
                    <Paragraph TextAlignment="Center" FontSize="12"></Paragraph>
                    <Paragraph TextAlignment="Center" FontWeight="Bold" FontSize="12">- CARGAS ULTIMAS Y NOMINALES -</Paragraph>
                    <BlockUIContainer>
                        <ListView Name="lstView2" ItemsSource="{Binding}" FontFamily="Calibri" FontSize="12" Background="Transparent" BorderThickness="0" ItemContainerStyle="{DynamicResource MyItemContainerStyle}">
                            <ListView.View>
                                <GridView>
                                    <GridViewColumn Header="Muro#" DisplayMemberBinding="{Binding Elemento}" Width="52" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Franja#" DisplayMemberBinding="{Binding Franja}" Width="52" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Nivel" DisplayMemberBinding="{Binding Nivel}" Width="52" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Pu(to)" DisplayMemberBinding="{Binding PU, StringFormat='F2'}" Width="51" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Vu(to)" DisplayMemberBinding="{Binding VU, StringFormat='F3'}" Width="55" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Mu(t.m)" DisplayMemberBinding="{Binding MU, StringFormat='F3'}" Width="56" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Pn(to)" DisplayMemberBinding="{Binding PN, StringFormat='F3'}" Width="56" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Vn(to)" DisplayMemberBinding="{Binding VN, StringFormat='F3'}" Width="55" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Mn(t.m)" DisplayMemberBinding="{Binding MN, StringFormat='F3'}" Width="55" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <!--<GridViewColumn Header="Mnz(t.m)" DisplayMemberBinding="{Binding MNZ, StringFormat='F3'}" Width="55" CellTemplate="{DynamicResource MyDataTemplate}"/>-->
                                    <GridViewColumn Header="Pu/Pn" DisplayMemberBinding="{Binding PUPN, StringFormat='F3'}" Width="50" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Vu/Vn" DisplayMemberBinding="{Binding VUVN, StringFormat='F3'}" Width="50" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Mu/Mn" DisplayMemberBinding="{Binding MUMN, StringFormat='F3'}" Width="50" CellTemplate="{DynamicResource MyDataTemplate}" /> </GridView>
                            </ListView.View>
                            <ListView.GroupStyle>
                                <GroupStyle>
                                    <GroupStyle.HeaderTemplate>
                                        <DataTemplate>
                                            <StackPanel>
                                                <TextBlock Text="{Binding Path = Nivel}" FontWeight="Bold" Padding="3" /> </StackPanel>
                                        </DataTemplate>
                                    </GroupStyle.HeaderTemplate>
                                    <GroupStyle.ContainerStyle>
                                        <Style TargetType="{x:Type GroupItem}">
                                        <Setter Property="Margin" Value="0,0,0,5"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type GroupItem}"> <Expander IsExpanded="True" BorderBrush="#FFA4B97F" BorderThickness="0,0,0,1"> <Expander.Header> <DockPanel> <TextBlock FontWeight="Bold" Text="{Binding Path = Nivel}" Margin="5,0,0,0" Width="100"/> <TextBlock FontWeight="Bold" Text="{Binding Path=ItemCount}"/> <TextBlock Text "Muro"/> </DockPanel> </Expander.Header> <Expander.Content> <ItemsPresenter /> </Expander.Content> </Expander> </ControlTemplate> </Setter.Value> </Setter>
                                        </Style>
                                    </GroupStyle.ContainerStyle>
                                </GroupStyle>
                            </ListView.GroupStyle>
                        </ListView>
                    </BlockUIContainer>
                    <Paragraph TextAlignment="Center" FontSize="12"></Paragraph>
                    <Paragraph TextAlignment="Center" FontWeight="Bold" FontSize="12">- PARAMETROS DE DISEÑO -</Paragraph>
                    <BlockUIContainer>
                        <ListView Name="lstView3" FontFamily="Calibri" FontSize="12" Background="Transparent" BorderThickness="0" ItemContainerStyle="{DynamicResource MyItemContainerStyle}">
                            <ListView.View>
                                <GridView>
                                    <GridViewColumn Header="Muro#" DisplayMemberBinding="{Binding Elemento}" Width="52" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Nivel" DisplayMemberBinding="{Binding Nivel}" Width="52" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Vnm(to)" DisplayMemberBinding="{Binding VMN, StringFormat='F2'}" Width="65" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Ae(cm2)" DisplayMemberBinding="{Binding Ae, StringFormat='F2'}" Width="66" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Fe" DisplayMemberBinding="{Binding Fe, StringFormat='F3'}" Width="60" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Fii" DisplayMemberBinding="{Binding Fi, StringFormat='F3'}" Width="60" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Kp.H/tb" DisplayMemberBinding="{Binding Kph, StringFormat='F3'}" Width="75" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Vm(to)" DisplayMemberBinding="{Binding Vm, StringFormat='F3'}" Width="72" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="te(cm)" DisplayMemberBinding="{Binding Te, StringFormat='F3'}" Width="72" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Vs(to)" DisplayMemberBinding="{Binding Vs, StringFormat='F3'}" Width="70" CellTemplate="{DynamicResource MyDataTemplate}" /> </GridView>
                            </ListView.View>
                            <ListView.GroupStyle>
                                <GroupStyle>
                                    <GroupStyle.HeaderTemplate>
                                        <DataTemplate>
                                            <TextBlock FontWeight="Bold" FontSize="14" Text="{Binding Elemento}" /> </DataTemplate>
                                    </GroupStyle.HeaderTemplate>
                                </GroupStyle>
                            </ListView.GroupStyle>
                        </ListView>
                    </BlockUIContainer>
                    <Paragraph TextAlignment="Center" FontSize="12"></Paragraph>
                    <Paragraph TextAlignment="Center" FontWeight="Bold" FontSize="12">- RESULTADOS DE DISEÑO - REFUERZOS EN MUROS -</Paragraph>
                    <BlockUIContainer>
                        <ListView Name="lstDisV" ItemsSource="{Binding}" FontFamily="Calibri" FontSize="12" Background="Transparent" BorderThickness="0">
                            <ListView.View>
                                <GridView>
                                    <GridViewColumn Header="Muro#" DisplayMemberBinding="{Binding Elemento}" Width="50" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Franja#" DisplayMemberBinding="{Binding Franja}" Width="52" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Nivel" DisplayMemberBinding="{Binding Nivel}" Width="50" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="As/Vert." DisplayMemberBinding="{Binding ASV, StringFormat='F2'}" Width="70" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="As/Hor." DisplayMemberBinding="{Binding ASH, StringFormat='F3'}" Width="70" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="As/Cab" DisplayMemberBinding="{Binding ACB, StringFormat='F3'}" Width="45" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="ctia/V" DisplayMemberBinding="{Binding CTV, StringFormat='F5'}" Width="55" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="ctia/H" DisplayMemberBinding="{Binding CTH, StringFormat='F5'}" Width="55" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="ctia/C" DisplayMemberBinding="{Binding CTC, StringFormat='F5'}" Width="55" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Ck/V." DisplayMemberBinding="{Binding CKV}" Width="40" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Ck/H." DisplayMemberBinding="{Binding CKH}" Width="40" CellTemplate="{DynamicResource MyDataTemplate}" />
                                    <GridViewColumn Header="Status" DisplayMemberBinding="{Binding CKS}" Width="45" CellTemplate="{DynamicResource MyDataTemplate}" /> </GridView>
                            </ListView.View>
                            <ListView.GroupStyle>
                                <GroupStyle>
                                    <GroupStyle.HeaderTemplate>
                                        <DataTemplate>
                                            <StackPanel>
                                                <TextBlock Text="{Binding Path = Nivel}" FontWeight="Bold" Padding="3" /> </StackPanel>
                                        </DataTemplate>
                                    </GroupStyle.HeaderTemplate>
                                    <GroupStyle.ContainerStyle>
                                        <Style TargetType="{x:Type GroupItem}">
                                        <Setter Property="Margin" Value="0,0,0,5"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type GroupItem}"> <Expander IsExpanded="True" BorderBrush="#FFA4B97F" BorderThickness="0,0,0,1"> <Expander.Header> <DockPanel> <TextBlock FontWeight="Bold" Text="{Binding Path = Nivel}" Margin="5,0,0,0" Width="100"/> <TextBlock FontWeight="Bold" Text="{Binding Path=ItemCount}"/> <TextBlock Text "Muro"/> </DockPanel> </Expander.Header> <Expander.Content> <ItemsPresenter /> </Expander.Content> </Expander> </ControlTemplate> </Setter.Value> </Setter>
                                        </Style>
                                    </GroupStyle.ContainerStyle>
                                </GroupStyle>
                            </ListView.GroupStyle>
                        </ListView>
                    </BlockUIContainer>
                </Section>
            </FlowDocument>
        </FlowDocumentScrollViewer>
        <StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Right">
            <Button Height="24" Width="24" Grid.Row="1" Click="Button_Click" HorizontalAlignment="Right" Margin="12,12,4,12">
                <Image Source="C:/Users/Marin/source/repos/AnalisisMamposteriaWPF/Imagenes 24/impresoraModernaSetup.png" Stretch="None" /> </Button>
            <Button Name="btnsetPreview" Height="24" Width="24" Grid.Row="1" Click="btnsetPreview_Click" HorizontalAlignment="Right" Margin="0,12,12,12">
                <Image Source="C:/Users/Marin/source/repos/AnalisisMamposteriaWPF/Imagenes 24/vista_previa2.png" Stretch="None" /> </Button>
        </StackPanel>
    </Grid>
</Window>
Developer technologies | Windows Presentation Foundation
Developer technologies | C#
Developer technologies | C#
An object-oriented and type-safe programming language that has its roots in the C family of languages and includes support for component-oriented programming.
{count} votes

Answer accepted by question author
  1. Hui Liu-MSFT 48,711 Reputation points Microsoft External Staff
    2023-07-18T06:36:50.34+00:00

    Hi,@Marino Liranzo.

    By default, each BlockUIContainer, along with its content, is treated as a separate block for pagination purposes. This causes the header and the corresponding ListView to be split across different pages. You could wrap each header and its ListView inside a single BlockUIContainer to ensure that each header and its corresponding ListView are printed together.

          <!--<Paragraph TextAlignment="Center" FontWeight="Bold" FontSize="12">DATOS PARA EL DISEÑO</Paragraph>-->
                            <BlockUIContainer>
                            <StackPanel>
                                <TextBlock TextAlignment="Center" FontWeight="Bold" FontSize="12">DATOS PARA EL DISEÑO</TextBlock>
                                <ListView Name="lstView" FontFamily="Calibri" FontSize="12" Background="Transparent" BorderThickness="1"      ItemsSource="{Binding Users}"
                                      ItemContainerStyle="{DynamicResource MyItemContainerStyle}">
                                    <ListView.View>
                                        <GridView>
                                          ...
                                        </GridView>
                                    </ListView.View>
                                    <ListView.GroupStyle>
                                      ...
                                    </ListView.GroupStyle>
                                </ListView>
                                <TextBlock TextAlignment="Center" FontSize="12"></TextBlock>
                            </StackPanel>
                              
                            </BlockUIContainer>
                               <!--<Paragraph TextAlignment="Center" FontSize="12"></Paragraph>-->
    

    The result:

    enter image description here


    If the response is helpful, please click "Accept Answer" and upvote it.

    Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.

    1 person found this answer helpful.

0 additional answers

Sort by: Most helpful

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.