Imprimir con c#

  • 7 Respuestas
  • 6333 Vistas

Jose Torres

  • Aprendiz
  • **
  • Mensajes: 61
Imprimir con c#
« : marzo 25, 2014, 21:21:32 pm »
Este programita lo bajé de la web pero no lo puedo hacer andar, arranca la impresora pero tira el papel sin imprimirlo. Por favor díganme si se lo puede arreglar. Además comienza a correr la impresora no bien se actualiza el texto en un RichTextBox del formulario. Lo mismo me ocerrió con un TextBox. Gracias


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Printing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication11
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
            private void printDocument1_PrintPage(object sender,
    System.Drawing.Printing.PrintPageEventArgs e)
    {
       e.Graphics.DrawString(escrito.Text,
       new Font("Times New Roman", 10, FontStyle.Bold), Brushes.Black, 150, 125);
    }
     

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            printDocument1.Print();
        }

        private void escrito_TextChanged(object sender, EventArgs e)
        {
           
        }
    }
}

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2230
  • Soporte Técnico
Re: Imprimir con c#
« Respuesta #1 : marzo 26, 2014, 14:23:58 pm »
Puede ser que la posicion X este fuera de los limites del papel, y por eso no imprima, proba disminuyendo el valor X, por ejemplo:

e.Graphics.DrawString(escrito.Text, new Font("Times New Roman", 10, FontStyle.Bold), Brushes.Black, 25, 125);

Notar que X=25 e Y=125 en la linea anterior.

Yo utilizo algo similar, capaz que te sirve el siguiente codigo:

Código: [Seleccionar]
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
      Font f = new Font("Arial", 12, FontStyle.Regular);

      e.Graphics.DrawString(String.Format("Slicetex Electronics - STX8081"), f, Brushes.Black, 25, 30);

      e.Graphics.DrawString("HOLA MUNDO!!!", f, Brushes.Black, 25, 145);
}
« Última Modificación: marzo 26, 2014, 14:38:17 pm por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Jose Torres

  • Aprendiz
  • **
  • Mensajes: 61
Re: Imprimir con c#
« Respuesta #2 : marzo 26, 2014, 16:17:33 pm »
Desgraciadamente no funcionó tu versión, ni la merma de parámetros en el programa viejo. Sin embargo encontré uno que anda fenómeno pero es más largo. De todos modos sería bueno ver que anda pasando con los primeros que parecen tan sencillos. Éste es el nuevo que tiene la ventaja que se lo encaja como un paquete en la llamada del botón, y la desventaja que imprime toda la pantalla:


//Manipulamos las propiedades de los controles para la Impresión
            this.BackColor = Color.White;
            foreach (Control c in this.Controls)
            {
                if (c is Panel) { c.BackColor = Color.White; }
                if (c is Button) { c.Visible = false; }
            }
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;

            System.Drawing.Printing.PrintDocument printDocument1 = new System.Drawing.Printing.PrintDocument();
            Graphics g = this.CreateGraphics();
            Bitmap bmp = new Bitmap(this.Width, this.Height);
            this.DrawToBitmap(bmp, new Rectangle(0, 0, this.Width, this.Height));
            Image Img = (Image)bmp;

            //Restauramos las propiedades a su estado Original
            this.BackColor = Form.DefaultBackColor;
            foreach (Control c in this.Controls)
            {
                if (c is Panel) { c.BackColor = Panel.DefaultBackColor; }
                if (c is Button) { c.Visible = true; }
            }
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;

            printDocument1.DefaultPageSettings.Landscape = true;// Imprimir Horizontal
            printDocument1.PrintPage += (a, b) => { b.Graphics.DrawImage(Img, 50, 50); };
            printDocument1.Print();

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2230
  • Soporte Técnico
Re: Imprimir con c#
« Respuesta #3 : marzo 26, 2014, 17:16:49 pm »
Adjunto en este mensaje para descargar, un ejemplo probado para imprimir un texto en Microsoft Visual C# 2010.

Leer bibliografia existente en google.com para mas información.
« Última Modificación: marzo 26, 2014, 17:21:50 pm por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Jose Torres

  • Aprendiz
  • **
  • Mensajes: 61
Re: Imprimir con c#
« Respuesta #4 : marzo 26, 2014, 21:26:35 pm »
Boris, esto es un cañón!!! anduvo de una. Muchas gracias.

Jose Torres

  • Aprendiz
  • **
  • Mensajes: 61
Enviar palabras con c#
« Respuesta #5 : marzo 28, 2014, 11:15:48 am »
Con el programa de ejemplo estuve enviando números desde C# al plc y anda fenómeno; hay algún modo de enviar textos por ej. "gato"? Gracias

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2230
  • Soporte Técnico
Re: Imprimir con c#
« Respuesta #6 : marzo 28, 2014, 20:19:49 pm »
Enviar texto no difiere de enviar numeros, al fin y al cabo, todo es una reprensantacion binaria en las computadoras,
y eso incluye al texto.

En C# podes obtener el valor numerico de un caracter encerrandolo entre comillas simples, por ejemplo:

int Letra = 'b';

En ese caso la variable "Letra" tiene el valor numerico del caracter "b". Ese valor ya podes enviarlo al PLC.

Si tenes un string:

string Mensaje = "Hola";

Podes obtener el valor de cada letra, indexando el "Mensaje" como un array:

Letra = Mensaje[0];

En este caso, Letra, contiene el valor del primer caracter de la cadena "Hola", es decir la letra "H".

Para ver el tamaño de un string, podes hacer, Mensaje.Length, que
te devuelve la cantidad de caracteres que tiene Mensaje.

Esa es la idea, en google hay mucho ejemplos de manejo y manipulacion
de strings.

Quedo a disposicion.
« Última Modificación: marzo 28, 2014, 20:23:26 pm por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Jose Torres

  • Aprendiz
  • **
  • Mensajes: 61
Re: Imprimir con c#
« Respuesta #7 : marzo 29, 2014, 23:35:27 pm »
Excelente!!! Muchas gracias.