Печать в WPF - PullRequest
       17

Печать в WPF

0 голосов
/ 28 июля 2011

Я создал несколько окон в wpf, которые мне нужно распечатать в одном документе xps. Каждое окно открывается, загружает соответствующие данные, а затем сразу же закрывается. В настоящее время я использую приведенный ниже код для создания xps:

    Using doc = New XpsDocument(TempLoc, FileAccess.Write)
        Dim writer = XpsDocument.CreateXpsDocumentWriter(doc)
        Dim collator = writer.CreateVisualsCollator()

        Dim Window1 As Window1 = New Window1()
        Window1.ShowDialog()
        Dim Window2 As Window2 = New Window2()
        Window2.ShowDialog()
        Dim WindowX As WindowX = New WindowX()
        WindowX.ShowDialog()

        collator.BeginBatchWrite()
        collator.Write(Window1)
        collator.Write(Window2)
        collator.Write(WindowX)

        collator.EndBatchWrite()
    End Using

    Dim doc2 = New XpsDocument(TempLoc, FileAccess.Read)

    Dim seq = doc2.GetFixedDocumentSequence()

    Dim window = New Window()
    window.Content = New DocumentViewer() With {.Document = seq}
    window.ShowDialog()

    doc2.Close()

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

Можно ли заставить программу печатать полное окно независимо от включенного компьютера, изменив этот код? Альтернативно, есть ли лучший способ решить эту проблему?

Спасибо за любую помощь

1 Ответ

0 голосов
/ 28 июля 2011

Я печатаю с FixedDocuments, добавляя или добавляя размещенные элементы UIE.Я разместил полный исходный код в классе моего помощника здесь .Возможно, вы обнаружите, что разбив его на UIElements, вы получаете гораздо больший контроль над своим точным выводом на печать, хотя да, он требует от вас разделять код печати, а не просто выдавать окно.создавать очень хорошо оформленные многостраничные отчеты, которые всегда одинаковы на каждом компьютере.

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