Outlook cambia el servidor POP a Localhost
03/03/2010Plan General Contable
04/03/2010Para realizar esta práctica es necesario utilizar el espacio de nombres System.Diagnostics
Para buscar el fichero será necesario utilizar la clase OpenFileDialog, que nos permitirá almacenar el nombre del fichero y la ruta.
Para recuperar el nombre y ruta del fichero podemos utilizar un simble botón y un cuadro de texto.
La segunda parte, que es la propia de imprimir el fichero es algo más sencilla:
-
span style="color: #808080;">"print"
A tener en cuenta:
la opción de processWindowStyle.Hidden nos permitirá que se realicen las impresiones sin que se abran los programas con los que se ha realizado los ficheros. Es decir, si quiero imprimir un documento de Word, si no activo esta opción, se me abrirá brevemente una ventana de word.
Finalmente, para evitar un desastre ecológico, sugiero hacer todas las pruebas con una impresora PDF para verificar que todo funciona correctamente.
14 Comments
checate esto, quiero desarrollar un sistema de control de impresiones;
1.- te loggeas con un usuario,
2.- con un opendialog selecciono el archivo que quiero mandar a imprimir
3.- (X cada usuario solo tiene derecho a 100 impresiones), cuento el numero de paginas del documento, si la suma del numero de paginas + el # de impresiones ya realizadas es < a 100, ok , manda a imprimir, si no, no manda.
Esta es mi logica, la estoy implementando, pero no puedo mandar a imprimir el archivo directamente, si es un txt si, pero por ejemplo es un .doc o .PDF o etc….
con este codigo que tu tienes, creees que se pueda hacer lo que te digo??? bueno, lo probare y haber que tal,
espero tu opinion
Hola Marco,
Mírate este link que es para documentos Word.
http://msdn.microsoft.com/es-es/library/microsoft.office.tools.word.document.printout%28v=vs.80%29.aspx
Te permite controlar las páginas de impresión.
Otra cosa que podrías hacer, para no tener un montón de métodos diferentes, es imprimir el documento en pdf temporal, y gestionar el número de páginas solo de los ficheros pdf.
Para controlar el tema de las páginas pdf mirate este otro link.
http://es.w3support.net/index.php?db=so&id=320281
tu idea me funciono usando PdfSharp
using PdfSharp.Pdf;
using “” “” “”.IO;
pdfdocument doc = pdfreader.open(“ruta del archivo”);
int hojas = pdf.count;
y asi obtengo el numero de paginas y hacer la decicion, pero me surgio otro problema…
el usar el
…..
…..
6.printjob.StartInfo.Verb = “print”;
7.printjob.Start();
manda a imprimir el archivo y esta ok, pero lo hace con la impreso predeterminada, lo que quiero hacer es que te muuestre el printdialog y poder escojer la impresora, o por ejemplo configurar la hoja.
no se si me explique, osea que antes de mandarlo a imprimir, en lugar de mandarlo con la impreso predeterminada, poder escojer tu las preferencias de impresion como lo hacen por ejemplo el word, ctrl + p y te muestra el printdialog, estoy trabajando en ello pero todo lo que encuentro es con el printdocument.
6.printjob.StartInfo.Verb = “print”;
/// aqui muesto el printdialog, pero las propidades que escoja no las guarda, sino que lo manda a imprimir tal cual con la impreso predeterminada del sistema…
7.printjob.Start();
mira si te sirve este link de msdn:
Como mostrar el dialogo de impresión
http://msdn.microsoft.com/es-es/library/aa970848.aspx
Y como se podria seleccionar la impresora desde el codigo?
Hola, muchas gracias, estoy haciendo pruebas con el cod de impresion, de momento no tengo una impresora configurada directamente en mi equipo, solo las de red de la oficina y una impresora pdf, al ejecutar, por defecto me toma la impresora pdf, asumo que es la unica local que reconoce y por lo mismo asumo que no esta reconociendo las impresoras de red instaladas…. basicamente la pregunta es como puedo indicarle que impresora utilizar?…
Quedo atento.
Hola Jeyson,
Cuando hice esta entrada era utilizando la impresora por defecto que tenga seleccionado el equipo de Windows.
Si quisieras escoger una impresora, deberías llamar al diálogo de impresión y luego pasarle la impresora como parámetro al procedimiento.
lvgstark, que rápida respuesta, muchas gracias, intentaré lo que mencionas aunque no creo que en mi caso resulte ya que estoy tratando de imprimir un reporte de crystal y por alguna razón el dialogo de impresión cuando intente usarlo no funciono, es decir, ni aparecio en pantalla, he tomado varias opciones googleando y ninguna me funciona para lo que necesito, estoy trabajando un proyecto web en C#.
Si sabes de algún otro método para poder imprimir te agradezco, sino de todas formas muchas gracias por estar atento.
Hola de nuevo,
Comento que estoy tratando en este momento con este código que me encontré:
crystalReport.Load(Server.MapPath(“~/Reportes/Modulos/OtroSeguimiento/CrystalReport_OtrosSeguimientos.rpt”));
//Customers dsCustomers = GetData(“select * from customers”);
crystalReport.SetDataSource(this.hdDataset.Value);
cristalR.ReportSource = crystalReport;
La segunda linea esta comentada por que ya tengo mi data set cargado el problema que tengo es como decir en la tercera linea que tome el data set que tengo, no bien como manejar esos argumentos, seguiré revisando, si alguien sabe como lo agradezco.
Saludos.
Despues de hacer funcionar el cod anterior me di cuenta que era para imprimirlo en pantalla, así que no va…
Hola al fin solucione hacerlo de esta forma, exportando un pdf del reporte y abriendolo en el navegador, comparto la solucion si a alguien mas le sirve:
//Exportar al formato deseado, en mi caso pdf
reporte.ExportToDisk(ExportFormatType.PortableDocFormat, “C:/report.pdf”);
VerReportePdf();
//Funciona para ver el pdf en el navegador
private void VerReportePdf()
{
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.Buffer = false;
Response.ContentType = “application/pdf”;
Response.AddHeader(“Content-Disposition”, “inline; filename=” + “C:/report.pdf”);
Response.Flush();
Response.WriteFile(“C:/report.pdf”);
System.IO.File.Delete(“C:/report.pdf”); //Elimina el pdf exportado inicialmente
Response.End();
}
Y listo, funciona perfecto, dejo en manos del usuario los controles que ofrece el navegador para guardar e imprimir el pdf, lo hice de esta forma ya que poder imprimir directamente en la impresora es posible pero con los metodos que encontre no me detecta las impresoras de red.
Saludos.
Gracias Jeyson por tu aporte
Hola!
Me podrían explicar cómo imprimir eligiendo la impresora.
Gracias!!!
Hola Ely,
Aquí se explica para imprimir utilizando la impresora por defecto.
Para poder seleccionar una impresora tendrías que invocar al Dialogo de Impresoras (Print Dialog)
Te paso un link de microsoft donde hablan del tema
How to: Invoke a Print Dialog
http://msdn.microsoft.com/en-us/library/aa970848(v=vs.110).aspx
How to: Choose the Printers Attached to a User’s Computer in Windows Forms
http://msdn.microsoft.com/en-us/library/cfkddyc2(v=vs.110).aspx