zoukankan      html  css  js  c++  java
  • WPF打印京东电子面单(可以异步)

    参考:https://www.cnblogs.com/guogangj/archive/2013/02/27/2934733.html

    模板:JDFlowDocument.xaml

    <FlowDocument PageWidth="450" PagePadding="0 0 0 0" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" FontFamily="微软雅黑" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" TextOptions.TextFormattingMode="Display">
        <Paragraph>
            <Grid>
                <WrapPanel Width="380" Margin="-35 -40 0 0">
                    <StackPanel Width="380">
                        <StackPanel Width="48" Height="50" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0 0 10 0">
                            <Label>
                                <TextBlock FontSize="16" TextWrapping="Wrap">标准快递</TextBlock>
                            </Label>
                        </StackPanel>
                    </StackPanel>
                    <Border Width="380" Height="1" CornerRadius="0" BorderThickness="1" Margin="0 5 0 0">
                        <Border.BorderBrush>
                            <LinearGradientBrush SpreadMethod="Repeat" StartPoint="0,5" EndPoint="5,0" MappingMode="Absolute">
                                <LinearGradientBrush.GradientStops>
                                    <GradientStop Color="Black" Offset="0"/>
                                    <GradientStop Color="Black" Offset="0.2"/>
                                    <GradientStop Color="Transparent" Offset="0.4"/>
                                    <GradientStop Color="Transparent" Offset="0.6"/>
                                    <GradientStop Color="Black" Offset="0.8"/>
                                    <GradientStop Color="Black" Offset="1"/>
                                </LinearGradientBrush.GradientStops>
                            </LinearGradientBrush>
                        </Border.BorderBrush>
                    </Border>
                    <!--大头笔-->
                    <StackPanel Width="380" Height="55" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="0 -10 0 0">
                        <Label Content="{Binding BigShotName}" FontWeight="Bold" FontSize="45"></Label>
                    </StackPanel>
                    <Border Width="380" Height="1" CornerRadius="0" BorderThickness="1" Margin="0 10 0 0">
                        <Border.BorderBrush>
                            <LinearGradientBrush SpreadMethod="Repeat" StartPoint="0,5" EndPoint="5,0" MappingMode="Absolute">
                                <LinearGradientBrush.GradientStops>
                                    <GradientStop Color="Black" Offset="0"/>
                                    <GradientStop Color="Black" Offset="0.2"/>
                                    <GradientStop Color="Transparent" Offset="0.4"/>
                                    <GradientStop Color="Transparent" Offset="0.6"/>
                                    <GradientStop Color="Black" Offset="0.8"/>
                                    <GradientStop Color="Black" Offset="1"/>
                                </LinearGradientBrush.GradientStops>
                            </LinearGradientBrush>
                        </Border.BorderBrush>
                    </Border>
                    <!--集包地名称-->
                    <WrapPanel Width="380" Height="35" Margin="0 3 0 0" VerticalAlignment="Center">
                        <StackPanel VerticalAlignment="Center" HorizontalAlignment="Left" Width="35">
                            <Border HorizontalAlignment="Center" VerticalAlignment="Center" Width="35" Height="35" CornerRadius="0" BorderBrush="Black" BorderThickness="3">
                                <TextBlock Text="" FontSize="18" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                            </Border>
                        </StackPanel>
                        <StackPanel HorizontalAlignment="Left" VerticalAlignment="Center">
                            <Label Content="{Binding GatherCenterName}" FontSize="35" FontWeight="Bold"/>
                        </StackPanel>
                    </WrapPanel>
                    <Border Width="380" Height="1" CornerRadius="0" BorderThickness="1" Margin="0 3 0 0">
                        <Border.BorderBrush>
                            <LinearGradientBrush SpreadMethod="Repeat" StartPoint="0,5" EndPoint="5,0" MappingMode="Absolute">
                                <LinearGradientBrush.GradientStops>
                                    <GradientStop Color="Black" Offset="0"/>
                                    <GradientStop Color="Black" Offset="0.2"/>
                                    <GradientStop Color="Transparent" Offset="0.4"/>
                                    <GradientStop Color="Transparent" Offset="0.6"/>
                                    <GradientStop Color="Black" Offset="0.8"/>
                                    <GradientStop Color="Black" Offset="1"/>
                                </LinearGradientBrush.GradientStops>
                            </LinearGradientBrush>
                        </Border.BorderBrush>
                    </Border>
                    <!--收件、寄件-->
                    <WrapPanel Width="380" Margin="0 -5 0 0">
                        <!--收件-->
                        <WrapPanel Width="380" Height="60">
                            <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center" Width="30" Height="40">
                                <Label>
                                    <TextBlock TextWrapping="Wrap" Text="" FontSize="20" FontWeight="Bold"></TextBlock>
                                </Label>
                            </StackPanel>
                            <StackPanel>
                                <WrapPanel>
                                    <Label>
                                        <TextBlock TextWrapping="Wrap" Text="{Binding ToFullName}"  FontSize="12" FontWeight="Bold"></TextBlock>
                                    </Label>
                                    <Label>
                                        <TextBlock TextWrapping="Wrap" Text="{Binding ToMobile}"  FontSize="12" FontWeight="Bold"></TextBlock>
                                    </Label>
                                    <Label>
                                        <TextBlock TextWrapping="Wrap" Text="{Binding ToTelephone}"  FontSize="12" FontWeight="Bold"></TextBlock>
                                    </Label>
                                </WrapPanel>
                                <WrapPanel Width="340" Margin="0 -10 0 0">
                                    <Label>
                                        <TextBlock TextWrapping="Wrap" Text="{Binding ToFullAddress}"  FontSize="12" FontWeight="Bold"></TextBlock>
                                    </Label>
                                </WrapPanel>
                            </StackPanel>
                        </WrapPanel>
                        <Border Width="380" Height="1" CornerRadius="0" BorderThickness="1" Margin="0 -5 0 0">
                            <Border.BorderBrush>
                                <LinearGradientBrush SpreadMethod="Repeat" StartPoint="0,5" EndPoint="5,0" MappingMode="Absolute">
                                    <LinearGradientBrush.GradientStops>
                                        <GradientStop Color="Black" Offset="0"/>
                                        <GradientStop Color="Black" Offset="0.2"/>
                                        <GradientStop Color="Transparent" Offset="0.4"/>
                                        <GradientStop Color="Transparent" Offset="0.6"/>
                                        <GradientStop Color="Black" Offset="0.8"/>
                                        <GradientStop Color="Black" Offset="1"/>
                                    </LinearGradientBrush.GradientStops>
                                </LinearGradientBrush>
                            </Border.BorderBrush>
                        </Border>
                        <!--寄件-->
                        <WrapPanel Width="380" Margin="0 -5 0 0">
                            <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center" Width="30" Height="30">
                                <Label>
                                    <TextBlock TextWrapping="Wrap" Text="" FontSize="20" FontWeight="Bold"></TextBlock>
                                </Label>
                            </StackPanel>
                            <StackPanel>
                                <WrapPanel>
                                    <Label>
                                        <TextBlock TextWrapping="Wrap" Text="{Binding FromFullName}" FontSize="10" ></TextBlock>
                                    </Label>
                                    <Label>
                                        <TextBlock TextWrapping="Wrap" Text="{Binding FromMobile}" FontSize="10" ></TextBlock>
                                    </Label>
                                </WrapPanel>
                                <StackPanel Width="340" HorizontalAlignment="Left" Margin="0 -8 0 0">
                                    <Label>
                                        <TextBlock TextWrapping="Wrap" Text="{Binding FromFullAddress}" FontSize="10" ></TextBlock>
                                    </Label>
                                </StackPanel>
                            </StackPanel>
                        </WrapPanel>
                    </WrapPanel>
                    <Border Width="380" Height="1" CornerRadius="0" BorderThickness="1" Margin="0 0 0 0">
                        <Border.BorderBrush>
                            <LinearGradientBrush SpreadMethod="Repeat" StartPoint="0,5" EndPoint="5,0" MappingMode="Absolute">
                                <LinearGradientBrush.GradientStops>
                                    <GradientStop Color="Black" Offset="0"/>
                                    <GradientStop Color="Black" Offset="0.2"/>
                                    <GradientStop Color="Transparent" Offset="0.4"/>
                                    <GradientStop Color="Transparent" Offset="0.6"/>
                                    <GradientStop Color="Black" Offset="0.8"/>
                                    <GradientStop Color="Black" Offset="1"/>
                                </LinearGradientBrush.GradientStops>
                            </LinearGradientBrush>
                        </Border.BorderBrush>
                    </Border>
                    <!--面单号 条形码-->
                    <StackPanel Width="380" Height="65" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0 5 0 0">
                        <StackPanel Width="380" Height="65" HorizontalAlignment="Center" VerticalAlignment="Center">
                            <Image Source="{Binding WaybillCodeBarCodeUrl1}" />
                        </StackPanel>
                    </StackPanel>
                    <Border Width="380" Height="1" CornerRadius="0" BorderThickness="1" Margin="0 5 0 0">
                        <Border.BorderBrush>
                            <LinearGradientBrush SpreadMethod="Repeat" StartPoint="0,5" EndPoint="5,0" MappingMode="Absolute">
                                <LinearGradientBrush.GradientStops>
                                    <GradientStop Color="Black" Offset="0"/>
                                    <GradientStop Color="Black" Offset="0.2"/>
                                    <GradientStop Color="Transparent" Offset="0.4"/>
                                    <GradientStop Color="Transparent" Offset="0.6"/>
                                    <GradientStop Color="Black" Offset="0.8"/>
                                    <GradientStop Color="Black" Offset="1"/>
                                </LinearGradientBrush.GradientStops>
                            </LinearGradientBrush>
                        </Border.BorderBrush>
                    </Border>
                    <!--签收人-->
                    <WrapPanel Width="380" Height="60">
                        <StackPanel Width="80">
                            <Label Height="23" Margin="0 -5 0 0">
                                <TextBlock TextWrapping="Wrap" Text="{Binding Time1}" FontSize="8"></TextBlock>
                            </Label>
                            <Label Height="23" Margin="0 -10 0 0">
                                <TextBlock TextWrapping="Wrap" Text="{Binding Time2}" FontSize="10"></TextBlock>
                            </Label>
                            <Label Height="23" Margin="0 -10 0 0">
                                <TextBlock TextWrapping="Wrap" Text="{Binding Numbers}" FontSize="10"></TextBlock>
                            </Label>
                        </StackPanel>
                        <StackPanel Width="220">
                            <Label>
                                <TextBlock TextWrapping="Wrap" Text="{Binding SignDes}" FontSize="8"></TextBlock>
                            </Label>
                        </StackPanel>
                        <!--快递公司二维码 承运商编码-->
                        <StackPanel Width="60" Height="60" HorizontalAlignment="Center" VerticalAlignment="Center">
                            <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
                                <Image Width="60" Height="60" Source="{Binding ProviderCodeBarCodeUrl}" />
                            </StackPanel>
                        </StackPanel>
                    </WrapPanel>
    
                    <!--撕单分隔线-->
    
                    <!--面单号 条形码-->
                    <StackPanel Width="380" Margin="0 50 0 0">
                        <StackPanel Width="280" Height="50" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0 0 10 0">
                            <Image Source="{Binding WaybillCodeBarCodeUrl2}" />
                        </StackPanel>
                    </StackPanel>
                    <Border Width="380" Height="1" CornerRadius="0" BorderThickness="1" Margin="0 0 0 0">
                        <Border.BorderBrush>
                            <LinearGradientBrush SpreadMethod="Repeat" StartPoint="0,5" EndPoint="5,0" MappingMode="Absolute">
                                <LinearGradientBrush.GradientStops>
                                    <GradientStop Color="Black" Offset="0"/>
                                    <GradientStop Color="Black" Offset="0.2"/>
                                    <GradientStop Color="Transparent" Offset="0.4"/>
                                    <GradientStop Color="Transparent" Offset="0.6"/>
                                    <GradientStop Color="Black" Offset="0.8"/>
                                    <GradientStop Color="Black" Offset="1"/>
                                </LinearGradientBrush.GradientStops>
                            </LinearGradientBrush>
                        </Border.BorderBrush>
                    </Border>
                    <!--收件、寄件-->
                    <WrapPanel Width="380" Margin="0 -5 0 0">
                        <StackPanel Width="300">
                            <!--收件-->
                            <WrapPanel Width="300" Height="40">
                                <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center" Width="30" Height="40">
                                    <Label>
                                        <TextBlock TextWrapping="Wrap" Text="" FontSize="20" FontWeight="Bold"></TextBlock>
                                    </Label>
                                </StackPanel>
                                <StackPanel Width="270" Height="40">
                                    <WrapPanel >
                                        <Label>
                                            <TextBlock TextWrapping="Wrap" Text="{Binding ToFullName}"  FontSize="8" ></TextBlock>
                                        </Label>
                                        <Label>
                                            <TextBlock TextWrapping="Wrap" Text="{Binding ToMobile2}"  FontSize="8"></TextBlock>
                                        </Label>
                                        <Label>
                                            <TextBlock TextWrapping="Wrap" Text="{Binding ToTelephone}"  FontSize="8"></TextBlock>
                                        </Label>
                                    </WrapPanel>
                                    <WrapPanel Width="280" Margin="0 -8 0 0">
                                        <Label>
                                            <TextBlock TextWrapping="Wrap" Text="{Binding ToFullAddress}"  FontSize="8"></TextBlock>
                                        </Label>
                                    </WrapPanel>
                                </StackPanel>
                            </WrapPanel>
                            <Border Width="300" Height="1" CornerRadius="0" BorderThickness="1">
                                <Border.BorderBrush>
                                    <LinearGradientBrush SpreadMethod="Repeat" StartPoint="0,5" EndPoint="5,0" MappingMode="Absolute">
                                        <LinearGradientBrush.GradientStops>
                                            <GradientStop Color="Black" Offset="0"/>
                                            <GradientStop Color="Black" Offset="0.2"/>
                                            <GradientStop Color="Transparent" Offset="0.4"/>
                                            <GradientStop Color="Transparent" Offset="0.6"/>
                                            <GradientStop Color="Black" Offset="0.8"/>
                                            <GradientStop Color="Black" Offset="1"/>
                                        </LinearGradientBrush.GradientStops>
                                    </LinearGradientBrush>
                                </Border.BorderBrush>
                            </Border>
                            <!--寄件-->
                            <WrapPanel Width="300" Margin="0 -5 0 0">
                                <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center" Width="30" Height="40">
                                    <Label>
                                        <TextBlock TextWrapping="Wrap" Text="" FontSize="20" FontWeight="Bold"></TextBlock>
                                    </Label>
                                </StackPanel>
                                <StackPanel Width="270" Height="40">
                                    <WrapPanel>
                                        <Label>
                                            <TextBlock TextWrapping="Wrap" Text="{Binding FromFullName}" FontSize="8" ></TextBlock>
                                        </Label>
                                        <Label>
                                            <TextBlock TextWrapping="Wrap" Text="{Binding FromMobile}" FontSize="8" ></TextBlock>
                                        </Label>
                                    </WrapPanel>
                                    <StackPanel Width="280" Margin="0 -8 0 0">
                                        <Label>
                                            <TextBlock TextWrapping="Wrap" Text="{Binding FromFullAddress}" FontSize="8" ></TextBlock>
                                        </Label>
                                    </StackPanel>
                                </StackPanel>
                            </WrapPanel>
                        </StackPanel>
                        <Border Width="1" Height="65" CornerRadius="0" BorderThickness="1" Margin="0 0 0 0">
                            <Border.BorderBrush>
                                <LinearGradientBrush SpreadMethod="Repeat" StartPoint="0,5" EndPoint="5,0" MappingMode="Absolute">
                                    <LinearGradientBrush.GradientStops>
                                        <GradientStop Color="Black" Offset="0"/>
                                        <GradientStop Color="Black" Offset="1"/>
                                    </LinearGradientBrush.GradientStops>
                                </LinearGradientBrush>
                            </Border.BorderBrush>
                        </Border>
                        <!--电子面单码-->
                        <StackPanel Width="60" Height="60" HorizontalAlignment="Center" VerticalAlignment="Center">
                            <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
                                <Image Width="60" Height="60" Source="{Binding WaybillCodeQRCodeUrl}" />
                            </StackPanel>
                        </StackPanel>
                    </WrapPanel>
                    <Border Width="380" Height="1" CornerRadius="0" BorderThickness="1" Margin="0 -5 0 0">
                        <Border.BorderBrush>
                            <LinearGradientBrush SpreadMethod="Repeat" StartPoint="0,5" EndPoint="5,0" MappingMode="Absolute">
                                <LinearGradientBrush.GradientStops>
                                    <GradientStop Color="Black" Offset="0"/>
                                    <GradientStop Color="Black" Offset="0.2"/>
                                    <GradientStop Color="Transparent" Offset="0.4"/>
                                    <GradientStop Color="Transparent" Offset="0.6"/>
                                    <GradientStop Color="Black" Offset="0.8"/>
                                    <GradientStop Color="Black" Offset="1"/>
                                </LinearGradientBrush.GradientStops>
                            </LinearGradientBrush>
                        </Border.BorderBrush>
                    </Border>
    
                    <StackPanel Width="380" Height="90" HorizontalAlignment="Left">
                        <TextBlock TextWrapping="Wrap" Text="{Binding CustomArea}" HorizontalAlignment="Left" FontSize="10"></TextBlock>
                    </StackPanel>
                    <StackPanel Width="380" HorizontalAlignment="Right" VerticalAlignment="Bottom">
                        <Label Content="已验视" FontSize="12" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0 0 10 0"></Label>
                    </StackPanel>
                    <Border Width="380" Height="1" CornerRadius="0" BorderThickness="1" Margin="0 5 0 0">
                        <Border.BorderBrush>
                            <LinearGradientBrush SpreadMethod="Repeat" StartPoint="0,5" EndPoint="5,0" MappingMode="Absolute">
                                <LinearGradientBrush.GradientStops>
                                    <GradientStop Color="Black" Offset="0"/>
                                    <GradientStop Color="Black" Offset="0.2"/>
                                    <GradientStop Color="Transparent" Offset="0.4"/>
                                    <GradientStop Color="Transparent" Offset="0.6"/>
                                    <GradientStop Color="Black" Offset="0.8"/>
                                    <GradientStop Color="Black" Offset="1"/>
                                </LinearGradientBrush.GradientStops>
                            </LinearGradientBrush>
                        </Border.BorderBrush>
                    </Border>
                </WrapPanel>
            </Grid>
        </Paragraph>
    </FlowDocument>
    View Code

    代码:Dispatcher.Invoke可以防止报错:调用线程必须为 STA,因为许多 UI 组件都需要。

    public void PrintIt()
    {
    WaybillData waybill = new WaybillData();//TODO:自己构造数据
    System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action<WaybillData>(PrintAction), waybill);
    }
    public void PrintAction(WaybillData t)
            {
                PrintDialog pdlg = new PrintDialog();
                FlowDocument doc = PrintPreviewWindow.LoadDocumentAndRender("JDFlowDocument.xaml", t);
                Dispatcher.Invoke(new DoPrintMethod(DoPrint), DispatcherPriority.ApplicationIdle, pdlg, ((IDocumentPaginatorSource)doc).DocumentPaginator);
            }
     private delegate void DoPrintMethod(PrintDialog pdlg, DocumentPaginator paginator);
            private void DoPrint(PrintDialog pdlg, DocumentPaginator paginator)
            {
                pdlg.PrintDocument(paginator, "JDFlowDocument");
            }
  • 相关阅读:
    软件工程实践第三次作业——原型设计
    第三次作业补充
    软件工程实践之词频统计
    软工实践第一次作业
    B*树索引结构和内部管理(转)
    MySQL索引背后的数据结构及算法原理(转)
    Java编程军规
    差分隐私学习三:实现机制
    万能头文件#include <bits/stdc++.h>
    微信小程序-flex布局中align-items和align-self区别
  • 原文地址:https://www.cnblogs.com/xsj1989/p/10756395.html
Copyright © 2011-2022 走看看