Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Ayuda para imprimir

Estas en el tema de Ayuda para imprimir en el foro de Visual Basic clásico en Foros del Web. Hola buenas. Tengo el vb2005 express y el vb2008 express. No puedo imprimir un archivo de texto por impresora. Ni las funciones shell ni aplicaciones ...
  #1 (permalink)  
Antiguo 09/10/2008, 12:53
 
Fecha de Ingreso: octubre-2008
Mensajes: 4
Antigüedad: 15 años, 6 meses
Puntos: 0
Ayuda para imprimir

Hola buenas. Tengo el vb2005 express y el vb2008 express. No puedo imprimir un archivo de texto por impresora. Ni las funciones shell ni aplicaciones ni existe el objeto printer ni nah. Alguien sabe que hago mal???. No es k tenga un codigo que me de un error, es que no me deja imprimir porque no me reconoce codigo alguno para hacerlo. Tengo los objetos printpreviewdialog pero tampoco puedo cargar el documento y no se como van la verdad. En fin ni idea. Algun codigo de ejemplo para imprimir una linea???

Gracias
  #2 (permalink)  
Antiguo 09/10/2008, 16:23
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Ayuda para imprimir

Depende el modo en que deseas imprimir:


PrintDocument tiene un evento Print que debes utilizar para imprimir usando GDI+ para generar el documento al vuelo, no simplemente hacer un preview, porque el preview lo hara sobrel el PrintDocument que le digas.

si solo imprimiras por shell, entonces usa Process que es un objeto del namespace System.Diagnostics y te permitira ejecutar tu comando de impresion junto con los parametros no hay mas.

revisa sobre ambos temas y podras resolver tu duda.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #3 (permalink)  
Antiguo 10/10/2008, 18:23
 
Fecha de Ingreso: octubre-2008
Mensajes: 12
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Ayuda para imprimir

El siguiente código imprime un archivo directamente en la impresora que este conectada al puerto que especificas en el procedimiento ImpresionDirecta. A este
prodedimiento le pasas el nombre del archivo y el puerto.

Imports System
Imports System.IO
Imports System.Runtime.InteropServices
Class LPTWrite
<StructLayout(LayoutKind.Sequential)> _
Private Structure SECURITY_ATTRIBUTES
Public nLength As Integer
Public lpSecurityDescriptor As Integer
Public bInheritHandle As Integer
End Structure
Private Const GENERIC_WRITE As Integer = 1073741824
Private Const FILE_SHARE_WRITE As Integer = 2
Private Const OPEN_EXISTING As Integer = 3
Private Const FILE_ATTRIBUTE_NORMAL As Integer = 128
<DllImport("kernel32.dll")> _
Private Shared Function CreateFile(ByVal lpFileName As String, ByVal dwDesiredAccess As Integer, ByVal dwShareMode As Integer, <MarshalAs(UnmanagedType.Struct)> _
ByRef lpSecurityAttributes As SECURITY_ATTRIBUTES, ByVal dwCreationDisposition As Integer, ByVal dwFlagsAndAttributes As Integer, _
ByVal hTemplateFile As Integer) As Integer
End Function
<STAThread()> _
Public Sub ImpresionDirecta(ByVal fil As String, ByVal Puerto As String)
Try
Dim srleedatos As StreamReader = New StreamReader(fil)
Dim sa As New SECURITY_ATTRIBUTES()
sa.bInheritHandle = 0
sa.lpSecurityDescriptor = 0
sa.nLength = Marshal.SizeOf(sa)
Dim hLPT1 As IntPtr = CreateFile(Puerto, GENERIC_WRITE, FILE_SHARE_WRITE, sa, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
Dim fs As New FileStream(DirectCast(hLPT1, IntPtr), FileAccess.Write)
Dim sw As New StreamWriter(fs)
sw.WriteLine(srleedatos.ReadToEnd)
sw.Flush()
fs.Flush()
fs.Close()
srleedatos.Close()
Catch ex As Exception
System.Windows.Forms.MessageBox.Show(ex.ToString)
End Try
End Sub
  #4 (permalink)  
Antiguo 13/10/2008, 01:42
 
Fecha de Ingreso: octubre-2008
Mensajes: 4
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Ayuda para imprimir

Gracias. Voy probando, pero que sepais que lo leo y lo agradezco. xd
  #5 (permalink)  
Antiguo 13/10/2008, 02:35
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Ayuda para imprimir

Hola,

aqui tienes otra opción:

Código:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnImprimir.Click
        Dim psi As New ProcessStartInfo
        Try
            With psi
                .FileName = "C:\Archivo.txt"
                .Verb = "print"
                .WindowStyle = ProcessWindowStyle.Hidden
            End With
            Process.Start(psi)
        Catch Err As Exception
            MsgBox(Err.Message)

        End Try
    End Sub
Este código imprime directamente el archivo, si quieres una vista previa, cambia la propiedad de 'ProcessWindowStyle a 'Normal'

Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:04.