Ralado Posted December 22, 2024 at 12:00 PM Report #633881 Posted December 22, 2024 at 12:00 PM 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.
M6 Posted December 22, 2024 at 04:48 PM Report #633882 Posted December 22, 2024 at 04:48 PM 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."
Ralado Posted December 22, 2024 at 05:57 PM Author Report #633883 Posted December 22, 2024 at 05:57 PM É 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(); } } }
M6 Posted January 2, 2025 at 11:15 AM Report #633906 Posted January 2, 2025 at 11:15 AM 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."
Ralado Posted January 3, 2025 at 10:19 PM Author Report #633936 Posted January 3, 2025 at 10:19 PM ok obrigado vou ver o que consigo fazer
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now