Página 1 de 1

Exportar a PDF en lotus Notes no aplica filtros

NotaPublicado: Jue Ene 19, 2017 12:13 pm
por operaciones1
Hemos creado un código para exportar a PDF diferentes documentos. La exportación la realiza correctamente pero los filtros no los aplica.

Encontré lo siguiente: https://bz.apache.org/ooo/show_bug.cgi?id=119417

donde explican que FilterData precisa que se le indique el tipo de datos que es, por lo que se tiene que modificar el código para que el array que se pasa lo indique.

El código ya modificado es el siguiente:

Dim paso()
Set paso = SM.Bridge_GetValueObject()
Call paso.Set("[]com.sun.star.beans.PropertyValue",filterdata)
Set oPropertyValue = SM.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
oPropertyValue.Name = "FilterData"
oPropertyValue.Value = paso <--- aquí antes se le pasaba filterdata

donde filterdata es el array con los valores de filtro. Ahora me da un TypeMismatch cuando asigno paso a oPropertyValue.Value

Lo único que veo es que el set no convierte paso a array (que igual no lo tiene que hacer ...), y value parece que si que espera un array

Puede alguien indicarme como aplicar los filtros en la exportación?

Re: Exportar a PDF en lotus Notes no aplica filtros

NotaPublicado: Jue Ene 19, 2017 5:37 pm
por mauricio
Creo recordar, que FilterData también es una matriz de PropertyValue, ¿así se la estas pasando?.. ¿puedes mostrar el código completo que usas?

Saludos

Re: Exportar a PDF en lotus Notes no aplica filtros

NotaPublicado: Vie Ene 20, 2017 8:54 am
por operaciones1
El código con el que estoy probando es el siguiente:
Código: Seleccionar todo   Expandir vistaContraer vista
Dim Desktop As variant
   Dim Doc As variant
   Dim Url As String
   Dim Dummy() 'An (empty) array of PropertyValues
   Dim PrinterProperties(1) As Variant
   Dim docproperties(0) As Variant
   Dim SaveParam(1) As Variant
   
   Dim SM As Variant
   Dim filterdata(5)
   
   
   Url = "file:///C:/temp/prueba.odt"
   Set SM=CreateObject("com.sun.star.ServiceManager")
   Set Desktop=SM.createInstance("com.sun.star.frame.Desktop")
   
   Set docProperties(0) = MakePropertyValue("Hidden", False)
   Set Doc = Desktop.loadComponentFromURL(Url, "_blank", 0, docProperties)
   
   Set filterdata(0) = MakePropertyValue("OpenInFullScreenMode",True)
   Set filterdata(1) = MakePropertyValue("HideViewerMenubar",True)
   Set filterdata(2) = MakePropertyValue("HideViewerToolbar",True)
   Set filterdata(3) = MakePropertyValue("HideViewerWindowControls",True)
   Set filterdata(4) = MakePropertyValue("ExportBookmarks",True)
   Set filterdata(5) = MakePropertyValue("UseTaggedPDF",True)

   
   Set SaveParam(0) = MakePropertyValue("FilterName", "writer_pdf_Export")
   Set SaveParam(1) = MakePropertyValue("FilterData", filterdata)

   
   destino = "file:///c:/temp/resultado.pdf·
   Call doc.storeToURL(destino, SaveParam)
   Call doc.Close(false)


Function MakePropertyValue(cName, uValue) As Variant
   Dim oPropertyValue As Variant
   
   Set oPropertyValue = SM.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
   oPropertyValue.Name = cName
   oPropertyValue.Value = uValue
     
   Set MakePropertyValue = oPropertyValue
End Function

Function MakePropertyValue2(cName, uValue) As Variant
   Dim oPropertyValue As Variant
   Dim paso
   Set paso = SM.Bridge_GetValueObject()
   Call paso.Set("[]com.sun.star.beans.PropertyValue",uValue)
   Set oPropertyValue = SM.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
   oPropertyValue.Name = cName
   oPropertyValue.Value = paso
     
   Set MakePropertyValue2 = oPropertyValue
   
End Function


Tal como está me genera el pdf pero no aplica los filtros, si aplico lo que comentan para el FilterData recoja el tipo
cambio la línea --> Set SaveParam(1) = MakePropertyValue("FilterData", filterdata)
por --> Set SaveParam(1) = MakePropertyValue2("FilterData", filterdata)
da el error al asignar paso a oPropertyValue.Value (error type mismatch)

En lotusscript no conozco manera de decirle al array que sea de un tipo que no está definido. He tratado de crear yo un type con la misma estructura y asignárselo al arrary filterdata, pero al asignarlo tb me da error.

Re: Exportar a PDF en lotus Notes no aplica filtros

NotaPublicado: Vie Ene 20, 2017 4:51 pm
por mauricio
Claro, MakePropertyValue2 no creo que retorne una extructura correcta... hace mucho que no programo en Basic, prueba a usar esta versión de MakeProperty y nos cuentas:
Código: Seleccionar todo   Expandir vistaContraer vista
    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

Saludos

Re: Exportar a PDF en lotus Notes no aplica filtros

NotaPublicado: Vie Ene 20, 2017 5:25 pm
por operaciones1
El MarketPropertyValue que me indicas, si te fijas es el mismo que tengo puesto yo (el 2 no el otro), y que no aplica los filtros aunque si genera el pdf .
El MarketPropertyValue2 esta hecho para realizar lo que indicaban en https://bz.apache.org/ooo/show_bug.cgi?id=119417, que por lo que comentan FilterData precisa que se le indique calaramente al array que es de tipo PropertyValue. Pero al realizar la conversión, me da el typemismatch al asignarlo.

Re: Exportar a PDF en lotus Notes no aplica filtros

NotaPublicado: Vie Ene 20, 2017 5:58 pm
por mauricio
Si, pero tiene una "leve" diferencia con el tuyo... ¿puedes intentarlo?

Re: Exportar a PDF en lotus Notes no aplica filtros

NotaPublicado: Lun Ene 23, 2017 12:23 pm
por operaciones1
En lo que me pasas tengo que cambiar los object por variant, tema lotusscript, y filterdata no lo puedo poner con byval, ya que no se permite el paso de arrays como valor.
Pruebo cambiando eso y el resultado es el mismo.