Imprimir una Hoja oculta

Sólo un punto de encuentro para ofertas profesionales relacionadas con AOO

Imprimir una Hoja oculta

Notapor Sistemas » Mié Abr 06, 2011 6:08 pm

Hola:

Coloqué una pregunta en el foro general hace un mes y aunque tiene cientos de visitas, no hay ni una respuesta, así que la pongo aquí, a ver si alguien se siente interesado. Si alguien lo ve y cree poder ayudarme estoy dispuesto a pagar una cantidad razonable, que me envíen un email y nos ponemos de acuerdo.

Esta es la consulta:

Estoy haciendo unos macros para imprimir una hoja de cálculo y luego cerrarla. No quiero que aparezca la hoja a la vista durante el macro así que la abro con la opción HIDDEN en True pero no imprime nada, no da error pero no hace nada. Si le cambio el HIDDEN a False o si lo omito funciona perfectamente, abre la hoja mostrándola, la imprime y se cierra. He intentado poniéndole los parámetros de impresión asígnado las páginas a imprimir, número de copias, etc pero nada. Simplemente no imprime en modo oculto.

También tengo otro macro para generar un pdf con la hoja el cual si que funciona con la hoja oculta, abro la hoja oculta, defino un parámetro FilterName en calc_pdf_Export y ejecuto un storeToURL y la cierra, todo perfecto porque se ejecuta sin que se vea la hoja.

¿Hay algún truco para imprimir una hoja oculta?

Gracias
 Editado: Editado por el moderador (mauricio): he eliminado la dirección de e-mail ya que la gente que quiera contactarte puede utilizar las herramientas propias del foro (como mensajes privados o incluso un e-mail). Además, a menos que tengas un apetito insaciable por spam, no es buena idea poner la dirección de e-mail en un foro público como este... ;) 
openoffice 3.1, windows xp
Sistemas
 
Mensajes: 13
Registrado: Vie Feb 25, 2011 11:12 am

Re: Imprimir una Hoja oculta

Notapor mauricio » Jue Abr 07, 2011 8:18 am

Hola...

El único truco es darle el tiempo suficiente a la maquina y a la impresora para que tome el trabajo de impresión. En mi equipo funciona bien con diez milisegundos, pero tienes que ir aumentando este valor entre más lento sea el equipo. La siguiente macro hace lo que quieres:
Código: Seleccionar todo   Expandir vistaContraer vista
Option Explicit

Sub AbrirImprimir()
Dim sRuta As String
Dim mRuta() As String
Dim sArchivo As String
Dim mOpciones(0) As New com.sun.star.beans.PropertyValue
Dim mOpc(1) As New com.sun.star.beans.PropertyValue
Dim oDoc As Object

   sArchivo = "ArchivoOculto.ods"
   mOpciones(0).Name = "Hidden"
   mOpciones(0).Value = TRUE

   'Construimos la ruta del archivo, debe estar en el mismo directorio
   sRuta = ThisComponent.URL
   mRuta = Split( sRuta, "/" )
   mRuta(UBound(mRuta)) = sArchivo
   sRuta = Join( mRuta, "/" )
   If FileExists( sRuta ) Then
      'El número de copias
      mOpc(0).Name = "CopyCount"
      mOpc(0).Value = 1
      'Si se imprimen en juegos
      mOpc(1).Name = "Collate"
      mOpc(1).Value = True
      oDoc = StarDesktop.loadComponentFromURL( sRuta, "_blank", 0, mOpciones() )
      oDoc.Print( mOpc() )
      'Esperamos diez milisegundos
      Wait 10
      oDoc.Close( FALSE )   
   End If
   
End Sub

Toma en cuenta que ArchivoOculto.ods debe estar en el mismo directorio desde donde llamas esta macro.

Por favor, si esto responde tu pregunta, edita el primer mensaje de este hilo y agrega al principio del título la etiqueta [RESUELTO], adicionalmente puedes marcar el icono de la tilde verde, de esta forma conseguiremos un foro más ordenado.

También, si esto resuelve tu problema, puedes hacer una donación razonable a mi asociación: http://www.universolibre.org/node/2

Saludos
Adjuntos
Abrir e imprimir.7z
(10.96 KiB) 294 veces
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
AOO 4.1 | LibO 6.1.5 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5807
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: México, D.F.

Re: Imprimir una Hoja oculta

Notapor Sistemas » Vie Abr 08, 2011 11:49 am

Hola:

Gracias por la respuesta pero no lo logro. Tal vez se me pasó decirte que trabajo sobre visual basic .net y que dichos macros los hago ahí. Te paso el código:

Dim OOC As Object
Dim Escritorio As Object
Dim Libro As Object
Dim arg(0) As Object

OOC = CreateObject("com.sun.star.ServiceManager")
Escritorio = OOC.createInstance("com.sun.star.frame.Desktop")

arg(0) = MakePropertyValue("Hidden", True)
Libro = Escritorio.loadComponentFromURL(ArchivoURL, "_blank", 0, arg)
Dim ParametrosImprimir(0) As Object
ParametrosImprimir(0) = MakePropertyValue("CopyCount", 1)
Libro.Print(ParametrosImprimir)
Sleep(1000)
Libro.Close(False)

Sin tocar nada mas, cambiando el hidden a false ya imprime, mostrando la hoja, dejándolo en true no hace nada, ni imprime ni da error.

Curiosamente, el macro para generar pdf funciona bien:

Dim OOC As Object
Dim Escritorio As Object
Dim Libro As Object
Dim arg(0) As Object

OOC = CreateObject("com.sun.star.ServiceManager")
Escritorio = OOC.createInstance("com.sun.star.frame.Desktop")

arg(0) = MakePropertyValue("Hidden", True)
Libro = Escritorio.loadComponentFromURL(ArchivoURL, "_blank", 0, arg)
Dim SaveParam(0) As Object
SaveParam(0) = MakePropertyValue("FilterName", "calc_pdf_Export")
ArchivoPDF = Environ("Temp") + "\" + Reporte + Format(Rnd() * 1000, "0000") + ".pdf"
ArchivoPDFURL = ConvertToUrl(ArchivoPDF)
Call Libro.storeToURL(ArchivoPDFURL, SaveParam)
System.Diagnostics.Process.Start(ArchivoPDF)
Libro.Close(True)

En la empresa compramos una licencia openoffice de telefónica de españa únicamente para esta incidencia y cuando se la enviamos se quedaron locos y simplemente pasaron de nosotros. También he intentado ponerme en contacto directamente con sun microsystems pero no lo he logrado.

Si hay que pagar se paga, porque la otra solución es cancelar el proyecto del openoffice.

Gracias por tu ayuda
openoffice 3.1, windows xp
Sistemas
 
Mensajes: 13
Registrado: Vie Feb 25, 2011 11:12 am

Re: Imprimir una Hoja oculta

Notapor mauricio » Vie Abr 08, 2011 3:32 pm

Hola...

Si, era importante mencionar que usas VB.net ¿Probaste el archivo anexo?, es decir, primero veamos si no es un problema con la versión de OOo que tienes, yo la hice con LibO 3.3.2 sobre ArchLinux y funciona correctamente, ya que comprobemos que funciona bien desde "dentro" de OOo, entonces vemos como hacerlo desde VB.NET desde tu programa, que no debe de haber problema. Por favor, confirmame tu prueba.

Saludos

 Editado: He probado sobre una maquina virtual con Win XP y LibO 3.3.2 y funciona correctamente el ejemplo que te envié, ahora dejame ver como probar desde VB.NET 


 Editado: Probado sobre una maquina virtual con Win XP y OOo 3.3, funciona correctamente el ejemplo 
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
AOO 4.1 | LibO 6.1.5 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5807
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: México, D.F.

Re: Imprimir una Hoja oculta

Notapor mauricio » Vie Abr 08, 2011 6:59 pm

Hola...

En la misma maquina virtual, instale el VB.NET Express 2010, con el siguiente código pude imprimir sin problemas el archivo abierto de forma oculta.
Código: Seleccionar todo   Expandir vistaContraer vista
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim OOC As Object
        Dim Escritorio As Object
        Dim Libro As Object
        Dim sRuta As String
        Dim oFCP As Object
        Dim mOpc(0)
        Dim ParametrosImprimir(0)

        sRuta = "C:\ArchivoOculto.ods"
        OOC = CreateObject("com.sun.star.ServiceManager")
        Escritorio = OOC.createInstance("com.sun.star.frame.Desktop")
        oFCP = OOC.createInstance("com.sun.star.ucb.FileContentProvider")
        mOpc(0) = MakePropertyValue("Hidden", True)
        sRuta = oFCP.getFileURLFromSystemPath("", sRuta)
        Libro = Escritorio.loadComponentFromURL(sRuta, "_blank", 0, mOpc)
        ParametrosImprimir(0) = MakePropertyValue("CopyCount", 1)
        Libro.print(ParametrosImprimir)
        System.Threading.Thread.Sleep(1000)
        Libro.Close(False)

    End Sub

    Function MakePropertyValue(ByVal cName, ByVal uValue) As Object

        Dim oPropertyValue As Object
        Dim oSM As Object

        oSM = CreateObject("com.sun.star.ServiceManager")
        oPropertyValue = oSM.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
        oPropertyValue.Name = cName
        oPropertyValue.Value = uValue

        MakePropertyValue = oPropertyValue

    End Function

End Class


Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
AOO 4.1 | LibO 6.1.5 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5807
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: México, D.F.

Re: Imprimir una Hoja oculta

Notapor Sistemas » Mar Abr 12, 2011 8:16 am

Hola Mauricio:

Gracias^10 por tu ayuda. Creo que el problema no proviene de los macros en si, porque básicamente tus macros son iguales que los míos sino de algún otro agente. He hecho la prueba y he instalado el oo 3.3, ya que estaba trabajando con oo 3.1 y ahora, oh misterios de la vida, sale el icono de la impresora abajo como si fuese a imprimir, si tengo abierta la ventana de las impresoras durante un segundo aparece un 1 en el número de trabajos pendientes que desaparece al instante, pero de imprimir no imprime nada. Esto ya es un avance porque antes ni eso. Para terminar de reproducir tu entorno me falta instalar el VB 2010 porque estoy trabajando con VB 2008 pero no supe encontrar en la página de microsoft el enlace para descargarlo, ¿me lo puedes enviar?.

Muchas Gracias.
openoffice 3.1, windows xp
Sistemas
 
Mensajes: 13
Registrado: Vie Feb 25, 2011 11:12 am

Re: Imprimir una Hoja oculta

Notapor mauricio » Mar Abr 12, 2011 3:41 pm

Te lo hago llegar de forma privada para no "ensuciar" aquí, jejejeje es broma...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
AOO 4.1 | LibO 6.1.5 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5807
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: México, D.F.

Re: Imprimir una Hoja oculta

Notapor Sistemas » Dom Jul 17, 2011 7:15 pm

Hola al que quiera leer este tema:

después de meses de trabajo, de dos programadores y de mucha ayuda por parte de este foro y otros hemos llegado a una conclusión:

Desde visual basic .net no es posible imprimir una hoja calc oculta.

Evidentemente es un error de alguien pero no estamos seguros de si se trata de un error del visul basic .net o del openoffice. En cualquier caso no estamos en capacidad de solucionarlo así que lo resolvimos así:

En lugar de imprimir generamos un pdf que si que funciona aún con la hoja oculta.
Luego a través de las funciones del windows mandamos a imprimir dicho pdf

Funciona, solo un problema, normalmente tenemos instalado el acrobat reader para abrir archivos pdf y dicho programa, apartir de la versión 8, cuando se usa para imprimir permanece abierto aún después de terminar de imprimir. No es un error, es a posta por parte de la gente de adobe. Un mal menor dentro de todo que hemos asumido.

Saludos
sistemas
openoffice 3.1, windows xp
Sistemas
 
Mensajes: 13
Registrado: Vie Feb 25, 2011 11:12 am

Re: Imprimir una Hoja oculta

Notapor mauricio » Lun Jul 18, 2011 4:46 am

Sistemas escribió:Desde visual basic .net no es posible imprimir una hoja calc oculta.
sistemas


Pues yo si que pude con el ejemplo que te envíe, por supuesto hay un problema con tu entorno, pero si es poslble.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
AOO 4.1 | LibO 6.1.5 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5807
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: México, D.F.

Re: Imprimir una Hoja oculta

Notapor Sawaa » Lun Abr 01, 2013 5:31 pm

Hola se que no se debe de resucitar temas de mas de 6 meses de inactividad, pero me ha quedado la gran duda de que es lo que hace exactamente esta funcion:
mauricio escribió:
Código: Seleccionar todo   Expandir vistaContraer vista
Public Class Form1
    Function MakePropertyValue(ByVal cName, ByVal uValue) As Object

        Dim oPropertyValue As Object
        Dim oSM As Object

        oSM = CreateObject("com.sun.star.ServiceManager")
        oPropertyValue = oSM.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
        oPropertyValue.Name = cName
        oPropertyValue.Value = uValue

        MakePropertyValue = oPropertyValue

    End Function

End Class


espero no molestar :oops:
OpenOffice.org 3.4
windows 7
Sawaa
 
Mensajes: 4
Registrado: Lun Abr 01, 2013 5:25 pm
Ubicación: Mexico

Re: Imprimir una Hoja oculta

Notapor mauricio » Lun Abr 01, 2013 5:40 pm

No es molestia, la tuve cuando no pagaron por el trabajo que se hizo, pero eso, fue ayer...

No se tu nivel de programación así que disculpa si soy muy obvio o digo una tarugada con VB.NET que no conozco...

Para programar en cualquier lenguaje debes de conocer sus reglas y sintaxis.
Para hacer uso de cualquier "componente", debes de conocer sus objetos, métodos y propiedades.
Para enlazar componentes diferentes, debes de tener un modo de hacerlo.

La instrucción que ves es el modo en que puedes tener acceso a todo el API de OpenOffice, desde VB.NET
Código: Seleccionar todo   Expandir vistaContraer vista
oSM = CreateObject("com.sun.star.ServiceManager")

en otros lenguajes es muy similar la forma de crear este objeto, ya "dentro", en este caso en especifico, AOO, tiene unas estructuras en pareja de Nombre y Valor para establecer multiples propiedades en mutiples objetos, es lo que hace la siguiente linea:
Código: Seleccionar todo   Expandir vistaContraer vista
oPropertyValue = oSM.Bridge_GetStruct("com.sun.star.beans.PropertyValue")

La forma en que esta como función de una clase, es propio de VB.NET que reitero, no conozco...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
AOO 4.1 | LibO 6.1.5 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5807
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: México, D.F.

Re: Imprimir una Hoja oculta

Notapor Sawaa » Lun Abr 01, 2013 10:39 pm

Gracias por responder y pues si hasta alli le entiendo yo :( que una es para accesar al API de OpenOffice y la segunda para establecer propiedades, ya lo ultimo de lo que contiene las propiedades alli si que no le entendi.
pero muchas gracias por su tiempo :)
OpenOffice.org 3.4
windows 7
Sawaa
 
Mensajes: 4
Registrado: Lun Abr 01, 2013 5:25 pm
Ubicación: Mexico

Re: Imprimir una Hoja oculta

Notapor Sistemas » Mar Abr 02, 2013 9:13 am

Hola Mauricio:

Al leer las últimas modificaciones de este tema vi con cierta sorpresa una queja relacionada con pago. Me ha dolido un poco porque como puedes leer en las publicaciones el problema no se resolvió, al final se aplicó un amaño que ya sugerí desde la primera publicación. Además de eso el proyecto se canceló, la empresa quebró, el gobierno la intervino, pasó a administración judicial, el programa se eliminó y se sustituyó. Puedes hacer búsquedas en internet sobre el caso de "Grupo Playa Sol" en Ibiza y seguro encontrarás un amplio segumiento de este caso.

De todas formas, y a manera de compensación, aún conservo las fuentes del programa que creo que te pueden interesar. El programa está desarrollado en vb.net. Existe un parámetro del usuario en donde dice si quiere trabajar con excel o con calc y el programa genera el reporte según lo solicitado. la verdad es que es una pena que después de tanto trabajo se haya tirado a la basura pero al final funcionaba bien y las hojas generadas en calc eran de gran calidad, marcos, sombras, pie de páginas, en fin, todo.

Si te interesa no tengo problema en enviarte las fuentes con sus explicaciones respectivas.
openoffice 3.1, windows xp
Sistemas
 
Mensajes: 13
Registrado: Vie Feb 25, 2011 11:12 am


Volver a Soporte remunerado

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados