Visual Basic.NET - Problema al intentar imprimir en pdf

 
Vista:
sin imagen de perfil
Val: 83
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problema al intentar imprimir en pdf

Publicado por Questor (31 intervenciones) el 23/04/2019 18:44:12
Buenos días a toda la comunidad de la Web del Programador.

Tengo una funcion en Visual Studio 2017 que me graba un reporte .PDF en memoria y al momento de mandarlo a ejecutar con la siguiente función:

1
ShellExecute(0, vbNullString, "C:\Cooperativa\" & strEmpresa & ".PDF", vbNullString, vbNullString, 1)

me genera un error y me envia el siguiente mensaje:

Asistente para la depuración administrada 'PInvokeStackImbalance': 'Una llamada a la función PInvoke 'Cooperativa!Cooperativa.ModulHelp::ShellExecute' impidió la correspondencia de la pila. Es posible que la razón sea que la signatura PInvoke administrada no coincida con la signatura de destino no administrada. Compruebe que la convención y los parámetros de llamada de la signatura PInvoke coinciden con la signatura no administrada de destino.'

Espero que alguien pueda ayudarme a resolver mi problema ya que en VB6 si funciona bien, pero en Visual Studio 2017 esto es lo que me sucede.

De antemano gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Diego
Val: 605
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problema al intentar imprimir en pdf

Publicado por Diego (190 intervenciones) el 24/04/2019 01:31:30
Hola Questor, una consulta primero ese error te lo genera durante la depuracion, una vez compilado el proyecto, no funciona? Podría ser que debido a la version de VS que utilizas algunos manejos a las API que hacen enlaces externos con DLLs del sistema generen algun tipo de error en los códigos de depuración.

Si querés seguir insistiendo con el uso de API en .NET adelante, pero si querés avanzar podes utilizar procesos, por ejemplo para hacer lo que vos querés, tengo un archivo en la ubicacion que detallo con el nombre 1.PDF

1
2
3
4
5
6
7
8
Dim ProcessStartInfo As New System.Diagnostics.ProcessStartInfo
ProcessStartInfo.FileName = "G:\Escritorio\1.PDF"
ProcessStartInfo.Arguments = "www.terra.es"
ProcessStartInfo.WorkingDirectory = "G:\Escritorio"
ProcessStartInfo.WindowStyle = ProcessStartInfo.WindowStyle.Maximized
ProcessStartInfo.UseShellExecute = True
ProcessStartInfo.CreateNoWindow = False
System.Diagnostics.Process.Start(ProcessStartInfo)

Creo que es mas seguro, ordenado y obtenes el mismo resultado.
Espero haberte ayudado.
Saludos y +Bytes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 83
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problema al intentar imprimir en pdf

Publicado por Questor (31 intervenciones) el 25/04/2019 01:11:45
Hola Diego, te agradezco tu pronta atención a mi problema, tienes razon, corrí el ejecutable y no me envió ningún mensaje, pero tampoco me generó el .PDF.

Mirando el ejemplo que me enviaste, por lo que yo veo tu ya tienes el archivo en tu unidad "G:\Escritorio\1.PDF" y yo lo que hago es leer un archivo de texto y convertirlo a .PDF pero en memoria y el ShellExecute es el que permite abrirlo.

Gracias y saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Diego
Val: 605
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problema al intentar imprimir en pdf

Publicado por Diego (190 intervenciones) el 26/04/2019 04:04:32
Efectivamente, el archivo PDF ya lo tengo en esa ubicación y con el nombre que le pasas por variable. Me genera curiosidad en la instrucción ShellExecute cual es el parámetro que le pasas para abrir algo que está en memoria y no físicamente en un disco como un archivo.
Sin embargo le pasas un archivo que está dentro de una carpeta que se llama COOPERATIVA.

1
2
3
4
5
6
7
8
Dim ProcessStartInfo As New System.Diagnostics.ProcessStartInfo
ProcessStartInfo.FileName = "C:\Cooperativa\" & strEmpresa & ".PDF" '<<<<<< ESTE ES TU PARAMETRO
ProcessStartInfo.Arguments = ""
ProcessStartInfo.WorkingDirectory = "C:\Cooperativa"
ProcessStartInfo.WindowStyle = ProcessStartInfo.WindowStyle.Maximized
ProcessStartInfo.UseShellExecute = True
ProcessStartInfo.CreateNoWindow = False
System.Diagnostics.Process.Start(ProcessStartInfo)

Retomando el error que te arroja, podría estar relacionado con algun conflicto entre las versiones de las dll que estás utilizando, como es tu declaración de ShellExecute?

Saludos y +Bytes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 83
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problema al intentar imprimir en pdf

Publicado por Questor (31 intervenciones) el 29/04/2019 19:48:48
Hola Diego, buenas tardes.

Antes que nada, se nos atravesó el fin de semana y ya no pude contestarte, pero aquí estoy de nuevo.

Fíjate que yo estoy mal, yo pensaba que el ShellExecuteA me generaba el PDF, pero ya le hice un debug en VB6 y me di cuenta que el módulo que tengo para generar el PDF si me lo esta grabando todo en el caché del sistema y ya al final me lo graba en el directorio donde corre la aplicación, así que ahora voy a checar por qué el módulo en visual studio 2017 no me lo graba en el disco duro, por eso el ShellExecute me ha de mandar el error, porque no encuentra el archivo PDF para abrirlo.

Saludos cordiales.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 83
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problema al intentar imprimir en pdf

Publicado por Questor (31 intervenciones) el 29/04/2019 21:18:13
Estimado Diego, nuevamente yo, para informarte que ya logré grabar el PDF con mi módulo y gracias a ti, con la instrucción inicial que me pasaste logré abrirlo, muchas gracias amigo, si en algo te puedo ayudar algún día, ni lo dudes, escríbeme.

Saludos cordiales y un abrazo desde México.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Diego
Val: 605
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problema al intentar imprimir en pdf

Publicado por Diego (190 intervenciones) el 30/04/2019 00:47:46
Hola Questor, me alegra mucho saber que pudiste resolverlo.
Un abrazo desde Argentina y +Bytes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar