Jump to content

Recommended Posts

Posted

ola sou novo por aqui e tenho um projeto em wpf c# mvvm e gostaria de uma ajuda para poder imprimir recibos de venda e ordem de serviço mais estou encontrando dificuldades alguem pode me ajudar por favor ?
Quando vou tentar fazer a impressao direto na impressora ele nao consegue imprimir os dados que estao dentro do meu datagrid.

Posted

Tens de ser mais concreto e claro nas tuas dúvidas.
Tens algum erro? Aparece algo que não está bem?
Tenta imprimir para PDF primeiro, sempre poupas papel.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Posted

É o sequinte quando clico em imprimir ele abre a janela de impressao do windows e la tenha a opçao de imrimir direto na impressora ou salvar o arquivo em pdf se eu mandar imprimir direto na impressora ele imprime mais o itens adicionados no datagrid nao saem na impressao acredito que seja por conta de nao dar tempo de reenderizar aqui esta como estou fazendo

public partial class BotaoImprimir : Button
{
    public static readonly DependencyProperty FecharJanelaPropriedade =
      DependencyProperty.Register("FecharJanela", typeof(bool), typeof(BotaoImprimir), new UIPropertyMetadata(false));

    public bool FecharJanela
    {
        get
        {
            return (bool)GetValue(FecharJanelaPropriedade);
        }
        set
        {
            SetValue(FecharJanelaPropriedade, value);
        }
    }

    public BotaoImprimir()
    {
        InitializeComponent();
    }

    // Ficou aceitavel
    public void Imprimir(string chave, int? id)
    {

        var func = DI.CadastrosViews[chave];
        if (id.HasValue)
        {
            UserControl uc = func(id);
            PrintDialog printDlg = new PrintDialog();
            if (printDlg.ShowDialog() == true)
            {
                //// Medir o UserControl para seu tamanho desejado
                //uc.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
                //uc.Arrange(new Rect(uc.DesiredSize));

                //// Criar um UserControl para a impressão (sem usar clone aqui, apenas referência)

                //// Determinar o tamanho da área imprimível
                //Size printableSize = new Size(printDlg.PrintableAreaWidth, printDlg.PrintableAreaHeight);
                //double scaleX = printableSize.Width / uc.ActualWidth;
                //double scaleY = printableSize.Height / uc.ActualHeight;
                //double scale = Math.Min(scaleX, scaleY);

                //// Evitar uma escala muito pequena
                //scale = Math.Max(scale, 0.5);  // Ajuste para um valor mínimo de 50% de escala

                //uc.LayoutTransform = new ScaleTransform(scale, scale);

                //// Medir e arranjar o UserControl escalado
                //uc.Measure(printableSize);
                //uc.Arrange(new Rect(printableSize));
                printDlg.PrintVisual(uc, "User Control Printing.");
            }
        }
    }

    private void Imprimir_Click(object sender, RoutedEventArgs e)
    {
        if (DataContext is CadastroVendaViewModel vendaViewModel)
        {
            // Impressão para Venda
            int? id = vendaViewModel.Id;
            Imprimir(nameof(RelatorioReciboVendaViewModel), id);
        }
        else if (DataContext is CadastroOrdemServicoViewModel ordemServicoViewModel)
        {
            // Impressão para Ordem de Serviço
            int? id = ordemServicoViewModel.Id;
            Imprimir(nameof(RelatorioReciboOrdemServicoViewModel), id);
        }
        else
        {
            // Exibe uma mensagem caso o DataContext não seja reconhecido
            MessageBox.Show(
                "O tipo de contexto atual não suporta a funcionalidade de impressão.",
                "Erro de Impressão",
                MessageBoxButton.OK,
                MessageBoxImage.Warning);
        }

        if (FecharJanela)
        {
            //Fecha a janela que contém o botão
            Window parentWindow = Window.GetWindow(this);
            parentWindow?.Close();
        }
    }
}
  • 2 weeks later...
Posted

Não me parece que seja uma questão de tempo para fazer o render, mas podes despistar isso mostrando unicamente 1 elemento na grelha e, em caso de necessidade, fazer uma pausa.

 

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.