Compartilhar via


Como abrir uma caixa de diálogo de impressão

Para fornecer a capacidade de imprimir de seu aplicativo, você pode simplesmente criar e abrir um objeto PrintDialog.

Exemplo

O controle PrintDialog fornece um único ponto de entrada para interface do usuário, configuração e envio de trabalho XPS. O controle é fácil de usar e pode ser instanciado usando a marcação ou código XAML (Extensible Application Markup Language). O exemplo a seguir demonstra como instanciar e abrir o controle no código e como imprimi-lo. Ele também mostra como garantir que a caixa de diálogo dê ao usuário a opção de definir um intervalo específico de páginas. O código de exemplo pressupõe que há um arquivo FixedDocumentSequence.xps na raiz da unidade C: .

private void InvokePrint(object sender, RoutedEventArgs e)
    {
        // Create the print dialog object and set options
        PrintDialog pDialog = new PrintDialog();
        pDialog.PageRangeSelection = PageRangeSelection.AllPages;
        pDialog.UserPageRangeEnabled = true;

        // Display the dialog. This returns true if the user presses the Print button.
        Nullable<Boolean> print = pDialog.ShowDialog();
        if (print == true)
        {
            XpsDocument xpsDocument = new XpsDocument("C:\\FixedDocumentSequence.xps", FileAccess.ReadWrite);
            FixedDocumentSequence fixedDocSeq = xpsDocument.GetFixedDocumentSequence();
            pDialog.PrintDocument(fixedDocSeq.DocumentPaginator, "Test print job");
        }
    }
Private Sub InvokePrint(ByVal sender As Object, ByVal e As RoutedEventArgs)
        ' Create the print dialog object and set options
        Dim pDialog As New PrintDialog()
        pDialog.PageRangeSelection = PageRangeSelection.AllPages
        pDialog.UserPageRangeEnabled = True

        ' Display the dialog. This returns true if the user presses the Print button.
        Dim print? As Boolean = pDialog.ShowDialog()
        If print = True Then
            Dim xpsDocument As New XpsDocument("C:\FixedDocumentSequence.xps", FileAccess.ReadWrite)
            Dim fixedDocSeq As FixedDocumentSequence = xpsDocument.GetFixedDocumentSequence()
            pDialog.PrintDocument(fixedDocSeq.DocumentPaginator, "Test print job")
        End If
End Sub

Depois que a caixa de diálogo estiver aberta, os usuários poderão selecionar entre as impressoras instaladas em seu computador. Eles também terão a opção de selecionar o Gravador de Documentos do Microsoft XPS para criar um arquivo de Especificação de Papel XML (XPS) em vez de imprimir.

Nota

O controle System.Windows.Controls.PrintDialog do WPF, que é discutido neste tópico, não deve ser confundido com o componente System.Windows.Forms.PrintDialog do Windows Forms.

Estritamente falando, você pode usar o método PrintDocument sem abrir a caixa de diálogo. Nesse sentido, o controle pode ser usado como um componente de impressão invisível. Porém, por motivos de desempenho, seria melhor usar o método AddJob ou um dos muitos métodos Write e WriteAsync do XpsDocumentWriter. Para obter mais informações sobre isso, veja Imprimir arquivos XPS programaticamente.

Consulte também