簡體   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