WPF печатает только одну страницу - PullRequest
0 голосов
/ 28 октября 2019

сначала я не мог напечатать свою страницу с обеих сторон, так как я просто печатал визуально и не использовал потоковый документ, поэтому я поместил всю свою страницу в один абзац и потоковый документ. Одна печатная страница выглядит лучше, чем раньше, но она печатает не более одной страницы / сторону. Так что в моем примере кода он печатается только до статьи 8 и не печатает никакую другую страницу или сторону.

Я попробовал простой пример потокового документа в стороннем проекте, и он, кажется, может печатать на нескольких страницах и на обеих сторонах, поэтому принтер не подозревает.

edit: Также, если кто-нибудь знает, почему сетка с белым фоном не центрирована и сдвинута влево, что также будет полезно.

Это моя точка зрения:

<UserControl x:Class="Eblacorp_internal.Views.PAFMPReportView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:viewmodel="clr-namespace:Eblacorp_internal.ViewModel"
             mc:Ignorable="d" 
             d:DesignHeight="1950" d:DesignWidth="800">

    <UserControl.DataContext>
        <viewmodel:PAFMReportViewModel/>
    </UserControl.DataContext>

    <Grid>

        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="50*"/>
        </Grid.RowDefinitions>

        <StackPanel  Grid.Row="0">
            <Grid x:Name="ButtonGrid" >
                <Grid.ColumnDefinitions>
                    <ColumnDefinition></ColumnDefinition>

                </Grid.ColumnDefinitions>
                <Button Content="Print" x:Name="PrintReportButton" Command="{Binding printButton}"></Button>


            </Grid>

        </StackPanel>

        <FlowDocumentScrollViewer Grid.Row="1">

                <FlowDocument x:Name="PAFMFlowDocument" FontSize="11">
                    <Paragraph>
                        <StackPanel>
                            <Grid Margin="10" x:Name="PAFMGridPage1" Background="White">
                <StackPanel Margin="5">
                    <Image Source="/Eblacorp_internal;component/assets/kuwaitLogo.jpg" MaxWidth="30" MaxHeight="40"></Image>
                    <TextBlock HorizontalAlignment="Center" Text="الهيئة العـــــــــامة للقـــوى العــامـلة"></TextBlock>
                    <TextBlock HorizontalAlignment="Center" Text="The Public Authority For Manpower"></TextBlock>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition/>
                            <ColumnDefinition/>
                        </Grid.ColumnDefinitions>
                        <Border Grid.Column="0" BorderThickness="1.1" BorderBrush="Black">
                            <StackPanel Margin="5" Grid.Column="0">
                                <TextBlock HorizontalAlignment="Center" TextDecorations="Underline" Text="Sample Form an Employment Contract in the Civil Sector"></TextBlock>
                                <TextBlock Margin="30 10 20 0" Text="State o Kuwait"></TextBlock>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock>Public Authority of Manpower/</TextBlock>
                                    <TextBox BorderThickness="0" TextDecorations="UnderLine" MinWidth="80" Width="auto" Text="--INSERT HERE--" Foreground="Red"></TextBox>
                                </StackPanel>
                                <TextBlock FontFamily="Bold">Labour Department</TextBlock>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock>On</TextBlock>
                                    <TextBox BorderThickness="0" Foreground="Red" Margin="5 0 5 0" MinWidth="80">Enter Text Here</TextBox>
                                    <TextBlock>corresponing to</TextBlock>
                                    <DatePickerTextBox BorderThickness="0" Foreground="Red"></DatePickerTextBox>
                                    <TextBlock>the present</TextBlock>
                                </StackPanel>
                                <TextBlock>contract was concluded by and between:</TextBlock>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock>1. Company/</TextBlock>
                                    <TextBox BorderThickness="0" TextDecorations="UnderLine" MinWidth="80" Width="auto" Text="--INSERT HERE--" Foreground="Red"></TextBox>
                                </StackPanel>
                                <TextBlock>2. Represented in signature in the present contract by:</TextBlock>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock>Name:</TextBlock>
                                    <TextBox BorderThickness="0" TextDecorations="UnderLine" MinWidth="80" Width="auto" Text="--INSERT HERE--" Foreground="Red"></TextBox>
                                </StackPanel>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock>Civil Card:</TextBlock>
                                    <TextBox BorderThickness="0" TextDecorations="UnderLine" MinWidth="80" Width="auto" Text="--INSERT HERE--" Foreground="Red"></TextBox>
                                </StackPanel>
                                <TextBlock>(FirstParty)</TextBlock>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock>3. Name:</TextBlock>
                                    <TextBox BorderThickness="0" TextDecorations="UnderLine" MinWidth="80" Width="auto" Text="--INSERT HERE--" Foreground="Red"></TextBox>
                                </StackPanel>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock>4. Nationality:</TextBlock>
                                    <TextBox BorderThickness="0" TextDecorations="UnderLine" MinWidth="80" Width="auto" Text="--INSERT HERE--" Foreground="Red"></TextBox>
                                </StackPanel>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock>Civil Card:</TextBlock>
                                    <TextBox BorderThickness="0" TextDecorations="UnderLine" MinWidth="80" Width="auto" Text="--INSERT HERE--" Foreground="Red"></TextBox>
                                </StackPanel>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock>Residence:</TextBlock>
                                    <TextBox BorderThickness="0" TextDecorations="UnderLine" MinWidth="80" Width="auto" Text="--INSERT HERE--" Foreground="Red"></TextBox>
                                </StackPanel>
                                <TextBlock>(Second Party)</TextBlock>
                                <!--PREAMBLE-->
                                <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 5 0 0">Preamble</TextBlock>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock>The first party owns the facility entitled</TextBlock>
                                    <TextBox BorderThickness="0" TextDecorations="UnderLine" MinWidth="80" Width="auto" Text="--INSERT HERE--" Foreground="Red"></TextBox>
                                </StackPanel>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock>working in the field of</TextBlock>
                                    <TextBox BorderThickness="0" TextDecorations="UnderLine" MinWidth="80" Width="auto" Text="--INSERT HERE--" Foreground="Red"></TextBox>
                                </StackPanel>
                                <TextBlock>whereas it wished to conclude a contract with the second party to work</TextBlock>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock>or it in the profession of </TextBlock>
                                    <TextBox BorderThickness="0" TextDecorations="UnderLine" MinWidth="80" Width="auto" Text="--INSERT HERE--" Foreground="Red"></TextBox>
                                    <TextBlock> whereas the parties</TextBlock>
                                </StackPanel>
                                <TextBlock>acknowledged their capacity to conclude this contract; they agreed </TextBlock>
                                <TextBlock>upon the following:</TextBlock>
                                <!--Article One-->
                                <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 5 0 0">Article One</TextBlock>
                                <TextBlock>The preamble above shall constitute an integral part of the present</TextBlock>
                                <TextBlock>contract.</TextBlock>
                                <!--Article Two "Nature of the Work-->
                                <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 5 0 0">Article Two</TextBlock>
                                <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 0 0 0">"Nature of the Work</TextBlock>
                                <TextBlock>The first party concluded a contract with the second party to work for </TextBlock>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock>it in the profession of </TextBlock>
                                    <TextBox BorderThickness="0" TextDecorations="UnderLine" MinWidth="80" Width="auto" Text="--INSERT HERE--" Foreground="Red"></TextBox>
                                    <TextBlock>in the State of Kuwait.</TextBlock>
                                </StackPanel>
                                <!--Article Three-->
                                <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 5 0 0">Article Three</TextBlock>
                                <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 0 0 0">"Probation Period"</TextBlock>
                                    <TextBlock>The second party shall be subject to a probation period for a term 
                                        <LineBreak/>not exceeding 100 work days. Each party shall have the right to
                                     <LineBreak/> terminate the contract during the said term without notification.</TextBlock>
                                <!--Article Four-->
                                <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 5 0 0">Article Four</TextBlock>
                                <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 0 0 0">"Lease Value"</TextBlock>
                                <TextBlock>For executing the present contract, the second party shall receive the</TextBlock>
                                    <StackPanel Orientation="Horizontal">
                                        <TextBlock> wage of</TextBlock>
                                        <TextBox BorderThickness="0" TextDecorations="UnderLine" MinWidth="80" Width="auto" Text="--INSERT HERE--" Foreground="Red"></TextBox>
                                        <TextBlock>/~ dinars to be paid at the end of every</TextBlock>
                                    </StackPanel>
                                    <TextBlock> month. The first party may not decrease the wage during the
                                    <LineBreak/>term of the contract. It may not transfer the partly to daily wage
                                    <LineBreak/>without his approval.</TextBlock>
                                <!--Article Five-->
                                <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 5 0 0">Article Five</TextBlock>
                                <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 0 0 0">"Contract Term"</TextBlock>
                                    <StackPanel Orientation="Horizontal">
                                        <TextBlock>The contract shall come into force on </TextBlock>
                                        <TextBox BorderThickness="0" TextDecorations="UnderLine" MinWidth="80" Width="auto" Text="--INSERT HERE--" Foreground="Red"></TextBox>
                                        <TextBlock>The second</TextBlock>
                                    </StackPanel>
                                    <TextBlock> party  shall  execute his work during the entire execution term thereof.</TextBlock>
                                 <!--Article Six-->
                                <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 5 0 0">Article Six</TextBlock>
                                <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 0 0 0">"Contract Term"</TextBlock>
                                <TextBlock>The present contract has a definite term. It shall come into force on</TextBlock>
                                <StackPanel Orientation="Horizontal">
                                    <TextBox BorderThickness="0" TextDecorations="UnderLine" MinWidth="80" Width="auto" Text="--INSERT HERE--" Foreground="Red"></TextBox>
                                    <TextBlock>for a term of </TextBlock>
                                    <TextBox BorderThickness="0" TextDecorations="UnderLine" MinWidth="80" Width="auto" Text="--INSERT HERE--" Foreground="Red"></TextBox>
                                    <TextBlock>the contract maybe </TextBlock>
                                </StackPanel>
                                <TextBlock>renewed with the approval of the parties for similar terms not 
                                <LineBreak/>exceeding five years. The present contract has an indefinite term and 
                                <LineBreak/>it shall  come  into force on
                                </TextBlock>
                                <TextBox BorderThickness="0" TextDecorations="UnderLine" MinWidth="80" Width="auto" Text="--INSERT HERE--" Foreground="Red"></TextBox>
                                <TextBlock>*Considering the contract as having a definite or indefinite term
                                <LineBreak/>shall be subject to the will of the two parties.</TextBlock>


                                </StackPanel>



                            <!--Arabic Side-->
                        </Border>
                            <Border Grid.Column="1" BorderThickness="1.1" BorderBrush="Black">
                            <StackPanel Grid.Column="1">
                                    <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 5 0 0">نموذج عقد عمل استرشادي</TextBlock>
                                    <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 0 0 0">في القطاع الأهلي</TextBlock>
                                </StackPanel>
                            </Border>

                        </Grid>

                </StackPanel>


            </Grid>
            <Grid x:Name="PAFMGridPage2" Margin="10" Background="White">
                    <StackPanel Margin="5">

                        <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition/>
                            <ColumnDefinition/>
                        </Grid.ColumnDefinitions>
                        <StackPanel Margin="0" Grid.Column="0">
                            <Border BorderThickness="1.1" BorderBrush="Black">
                                <StackPanel Margin="5">
                                    <!--Article Seven-->
                                    <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 5 0 0">Article Seven</TextBlock>
                                    <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 0 0 0">"Annual Leave"</TextBlock>
                                    <TextBlock>The second party shall have the right to a paid annual leave with 
                                <LineBreak/>a term of 30 days. It shall   not be due on the first year save after the
                                <LineBreak/>expiration of nine months to be calculated from the date of the 
                                <LineBreak/>contract into force.</TextBlock>
                                        <!--Article Eight-->
                                        <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 5 0 0">Article Eight</TextBlock>
                                        <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 0 0 0">"Number of Work Hours"</TextBlock>
                                        <TextBlock>The first party may not require that the second party work for a term 
                                <LineBreak/>exceeding eight daily work hours with rest periods not less than one 
                                <LineBreak/>except for the cases set forth in the law.</TextBlock>
                                        <!--Article Nine-->
                                        <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 5 0 0">Article Nine</TextBlock>
                                        <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 0 0 0">"Ticket Value"</TextBlock>
                                        <TextBlock>The first party shall bear the expenses of the return of the second party 
                                <LineBreak/>to his country the expiration of the work relationship and his final 
                                <LineBreak/> departure from the country.</TextBlock>
                                        <!--Article Ten-->
                                        <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 5 0 0">Article Ten</TextBlock>
                                        <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 0 0 0">"Insurance against Injuries and Work Maladies"</TextBlock>
                                        <TextBlock>The first party shall insure the second party against injuries and work
                                <LineBreak/>maladies. It shall commit to the health insurance value in accordance
                                <LineBreak/>with the law No. (1) of the year 1999.</TextBlock>
                                        <!--Article Eleven-->
                                        <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 5 0 0">Article Eleven</TextBlock>
                                        <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 0 0 0">"End of Service Benefit"</TextBlock>
                                        <TextBlock>The second party shall be due the end of service benefit as set forth
                                <LineBreak/> the regulating laws</TextBlock>
                                        <!--Article Twelve-->
                                        <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 5 0 0">Article Twelve</TextBlock>
                                        <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 0 0 0">"Applicable Law"</TextBlock>
                                        <TextBlock>The provisions of the Labour code in the civil sector No. 6 of 2010 and 
                                <LineBreak/>the decisions executing same shall apply for all matters not provided 
                                <LineBreak/>for in the present contract. Shall be considered null every condition 
                                <LineBreak/>agreed upon in violation of the provisions of the law, unless the same 
                                <LineBreak/> has a better benefit for the worker.</TextBlock>
                                        <!--Article Thirteen-->
                                        <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 5 0 0">Article Thirteen</TextBlock>
                                        <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 0 0 0">"Special Conditions"</TextBlock>
                                        <TextBlock>1-……………………N/A………………….
                                <LineBreak/>2-……………………N/A………………….
                                <LineBreak/>3-……………………N/A………………….</TextBlock>
                                        <!--Article Fourteen-->
                                        <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 5 0 0">Article Fourteen</TextBlock>
                                        <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 0 0 0">"Special Conditions"</TextBlock>
                                        <TextBlock>The court of first instance and its Labour departments, in accordance 
                                <LineBreak/>with the provisions of the law No. 46 of the year 1987, shall be
                                <LineBreak/>competent to peruse any conflicts resulting from the execution or 
                                <LineBreak/> interpretation of the present contract.</TextBlock>
                                        <!--Article Fifteen-->
                                        <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 5 0 0">Article Fifteen</TextBlock>
                                        <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 0 0 0">"Contract Language"</TextBlock>
                                        <TextBlock>The  present  contract  was  made  in  Arabic and English. The  Arabic  texts   
                                <LineBreak/>shall in the case of any conflict between them.</TextBlock>
                                        <!--Article Sixteen-->
                                        <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 5 0 0">Article Sixteen</TextBlock>
                                        <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 0 0 0">"Contract Copies"</TextBlock>
                                        <TextBlock>The present contract was made in three copies, one for each party to
                                <LineBreak/>work in accordance therewith. The third copy shall be deposited at 
                                <LineBreak/>the Public Authority for Manpower.</TextBlock>
                                    </StackPanel>
                            </Border>
                        </StackPanel>









                            <!--Arabic Side-->
                        <StackPanel Margin="0" Grid.Column="1">
                                <Border BorderThickness="1.1" BorderBrush="Black">
                                    <StackPanel Margin="5">
                                        <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 5 0 0">Article Seven</TextBlock>
                                        <TextBlock FontFamily="Bold" TextDecorations="underline" HorizontalAlignment="Center" Margin="0 0 0 0">"Annual Leave"</TextBlock>
                                        <TextBlock>The second party shall have the right to a paid annual leave with 
                                <LineBreak/>a term of 30 days. It shall   not be due on the first year save after the
                                <LineBreak/>expiration of nine months to be calculated from the date of the 
                                <LineBreak/>contract into force.</TextBlock>
                                    </StackPanel>
                                </Border>




                            </StackPanel>



                    </Grid>

                    </StackPanel>




                </Grid>
        </StackPanel>
                    </Paragraph>
                </FlowDocument>
            </FlowDocumentScrollViewer>

    </Grid>
</UserControl>

А это моя модель представления для печати потокового документа.

using Eblacorp_internal.Commands;
using Eblacorp_internal.Views;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows.Documents;

namespace Eblacorp_internal.ViewModel
{
    class PAFMReportViewModel
    {
        //print button
        public RelayCommand printButton { set; private get; }

        public void printCommand(object obj)
        {
            PAFMPReportView PAFMReportView = new PAFMPReportView();

            PrintDialog pd = new PrintDialog();
            if (pd.ShowDialog() != true) return;

            PAFMReportView.PAFMFlowDocument.PageHeight = pd.PrintableAreaHeight;
            PAFMReportView.PAFMFlowDocument.PageWidth = pd.PrintableAreaWidth;
            PAFMReportView.PAFMFlowDocument.ColumnWidth = pd.PrintableAreaWidth;
            PAFMReportView.PAFMFlowDocument.ColumnGap = 0;

            IDocumentPaginatorSource idocument = PAFMReportView.PAFMFlowDocument as IDocumentPaginatorSource;

            pd.PrintDocument(idocument.DocumentPaginator, "Printing Flow Document...");
        }

        public PAFMReportViewModel()
        {
            printButton = new RelayCommand(printCommand);
        }
    }
}

1 Ответ

0 голосов
/ 31 октября 2019

Проблема заключалась в том, чтобы поместить все в один

<абзац>

. Как только я добавил еще один элемент

<абзац>

и каждая нужная мне страница находилась между одной из них, она хорошо печаталась и разбивала страницуплощадь нужна. Надеюсь, это кому-нибудь поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...