繁体   English   中英

打印多个具有不同页面方向的BitmapSource

[英]Print several BitmapSources with different page orientations

在C#中,我在同一文档中有一个BitmapSource集合。 这些BitmapSource每个都具有独立的页面方向,我想在同一打印作业中打印它们,并保持为每个页面设置的页面方向。

今天,我无法执行此操作,因为我使用的是PrintDialog类,并且每个BitmapSource都添加到了FixedDocument内部的FixedPage中-使用这种方法,我只能将页面方向设置为整个文档(每一个方向打印票)。 我应该怎么做才能在一个打印作业中打印多个具有不同页面方向的BitmapSource(在PrintDialog类中,仅使用一张打印票)?

由于我只有11个代表,因此我无法发表评论,但是我将尽力为您提供可能有用的信息。

有两件事:这可能取决于您如何创建FixedDocument和生成FixedPage 如果您首先要生成一个FixedPage ,然后将其添加到FixedDocument ,那么我可以考虑尝试一下。

此外,这取决于您如何打印页面,打印每页还是要调用一次打印以及打印整个文档。

无论如何,一种方法是在将固定页面添加到文档之前调整固定页面的大小。 如果您使用打印对话框,请获取打印票证属性并缩放控件或控件的大小,使其达到所需的大小。

这为我工作:

private void Button_Click_1(object sender, RoutedEventArgs e)
{
    var fp1 = new FixedPage() {Height=1056, Width =816};
    var g = new Grid();
    g.Children.Add(new Rectangle { Height = 1056, Width = 816, Fill = Brushes.Orange });
    fp1.Children.Add(g);

    var fp2 = new FixedPage() { Height = 816, Width = 1056 };
    var g1 = new Grid();
    g1.Children.Add(new Rectangle { Height = 816, Width = 1056, Fill = Brushes.Pink });
    fp2.Children.Add(g1);

    var fd = new FixedDocument();

    fd.Pages.Add(new PageContent{Child = fp1 });
    fd.Pages.Add(new PageContent{Child = fp2 });

    var d = new XpsDocument(@"C:\users\me\desktop\tmp.xps",
                            FileAccess.ReadWrite);

    var doc =
        XpsDocument.CreateXpsDocumentWriter(d);

    doc.Write(fd);
    d.Close();
}

Windows资源管理器预览中的tmp.xps如下所示:

tmp.xps

假设您不想将其打印到文件,或者也希望将其发送到打印机。

var hardCopy = fd.DocumentPaginator;
var pd = new PrintDialog();
if(pd.ShowDialog() == true)
{
    pd.PrintQueue.AddJob("My Document",
                         @"C:\users\me\desktop\tmp.xps",
                         false);
}

注意:仅当您使用XPS设备进行打印时,打印输出才会具有正确的方向。 请参见PrintQueue.IsXpsDevice

如果这不符合您的需求,则必须编写自己的DocumentPaginator ,以便处理每页的打印。 您在此处拥有的一种选择是在DocumentPaginator.GetPage(int index)中调用可视化/页面时对其进行转换。 如果更改任何UI属性,请记住为每个页面调用Measure,Arrange和UpdateLayout。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM