Fichas de Referencia L.O. Basic

Ficha nº 9.
Parámetros de ejecución

Nivel: Avanzado

Créditos

Autor: Jean-François Nifenecker – jean-francois.nifenecker@laposte.net

Traducción y adaptación: B. Antonio Fernández

Esta ficha de referencia está bajo licencia de CreativeCommons BY-SA v3 (fr) o posterior.: https://creativecommons.org/licenses/by-sa/3.0/fr/

img_FB26209-001

Este documento es una adaptación del documento original, en Francés, que se puede obtener en la Wiki de publicaciones de LibreOffice.

Versión

Fecha

Comentarios

2.0

06/04/2021

Mise en forme.

2.0_ES

15/09/2026

Traducción y cambio de formato para esta versión

Somos como enanos a hombros de gigantes. Si alcanzamos a ver más cosas y más lejanas que ellos, no es por la perspicacia de nuestra visión, ni por nuestra grandeza, sino porque son ellos quienes nos elevan. (atribuido a Bernard de Chartres )

Rutas de acceso que utiliza LibreOffice

Rutas de los archivos de usuario

Son las rutas definidas en  Herramientas > Opciones > LibreOffice > Rutas . Para acceder a estas, se puede usar el servicio PathSettings

Dim oPaths As Object, Dirs As String
oPaths = CreateUnoService("com.sun.star.util.PathSettings")
Dirs = oPaths.getPropertyValue("Xxx")

Dim oContext as object, oPaths as object, Dirs as string
 
oContext = getProcessServiceManager().DefaultContext
 
oPaths = oContext.getValueByName("/singletons/com.sun.star.util.thePathSettings")
Dirs = oPaths.Xxx

Dirs obtiene una cadena con los directorios de Xxx separados por  punto y coma.  Xxx es la propiedad correspondiente al directorio según la tabla.

La propiedad...

… Indica el directorio de:

Addin

Complementos de la antigua API.

AutoCorrect

Parámetros del diálogo de corrección automática.

AutoText

Textos automáticos

Backup

Las copias de seguridad.

Basic

Archivos Basic utilizados por las macros.

Bitmap

Iconos de las barras de herramientas.

Config

Archivos de configuración.

Dictionary

Diccionarios proporcionados con la instalción.

Favorite

Respaldo de los marcadores de las carpetas.

Filter

Filtros

Gallery

Archivos multimedia y la base de datos de la Galería.

Graphic

Se muestra por defecto cuando se abre o graba un gráfico

Help

Archivos de Ayuda

Linguistic

Archivos para la revisión ortográfica.

Module

Módulos.

Palette

Archivos de las paletas de colores y estilos (.sob y .sof).

Plugin

Complementos o plug-in.

Storage

Información de servidores de correo, noticias y FTP.

Temp

Archivos temporales (usado por LibreOffice).

Template

Plantillas.

UIConfig

Archivos de configuración.

UserConfig

Ajustes propios del usuario.

Work

Directorio de trabajo (puede estar modificado por el usuario)

BasePathShareLayer

Directorio de configuración compartido([prog_inst]./share/config)

BasePathUserLayer

Directorio de configuración de usuario en red ?(..[usuario]/config)

Ruta de instalación de una extensión o complemento

Use el «singleton» "/singletons/com.sun.star.deployment.PackageInformationProvider"

 Dim oInfo As Object, Path As String
 oInfo = GetDefaultContext.getByName("/singletons/com.sun.star.deployment.PackageInformationProvider")
 If Not IsNull(oInfo) Then
   Path = oInfo.getPackageLocation(ExtID)
 End If
 If (Path <> "") Then Path = Path & "/"

ExtID es el identificador único de la extensión (ej: "com.company.NombreExtension")

Parámetros de ejecución de LibreOffice

Se dispone de dos servicios complementarios: PathSubstitution y MacroExpander.

Uso del servicio PathSubstitution

Dim oSubst As Object, Resultado As String
oSubst = CreateUnoService("com.sun.star.util.PathSubstitution")
Resultado = oSubst.getSubstituteVariableValue("$(nombre_variable)")

Variables sustituibles:

La variable…

… indica:

$(inst)

Directorio de instalación de LibreOffice.

$(prog)

Directorio de acceso al programa soffice.

$(user)

Directorio del usuario (usado por LibreOffice)

$(work)

Directorio de trabajo del usuario
En Windows, será Mis Documentos. En Unix, posiblemente «home».

$(home)

Directorio del usuario (sistema operativo). En Unix es «home».
En Windows «Documents and Settings\<username>\Documents».

$(temp)

Directorio de archivos temporales en uso.

$(path)

Indica el contenido de la variable de entono PATH.

$(username)

El nombre del usuario de la sesión en curso (en Windows es sin dominio)

$(langid)

El código del idioma utilizado por LibreOffice.Ej: 3082 para el español (España).

$(vlang)

El código del idioma utilizado por LibreOffice, en forma textual. (es = español).

Uso del singleton expansor de (cadenas) macros

Mediante el singletón MacroExpander se pueden obtener /utilizar variables específicas del entorno propias de LibreOffice.

Utilice  "/singletons/com.sun.star.util.theMacroExpander" y emplee su método ExpandMacros():

 Dim oContext as Object    'objet contexto
Dim oMacroExpand as Object    'macro expansor
Dim Resultado As String
  oContext = getProcessServiceManager().DefaultContext
  oMacroExpand = oContext.getValueByName("/singletons/com.sun.star.util.theMacroExpander")
 Resultado = oMacroExpand.ExpandMacros("$UNO_USER_PACKAGES_CACHE")

Macros

Vea : https://wiki.documentfoundation.org/Development/Environment_variables  Algunas variables son específicas del sistema operativo y /o parámetros de configuración de LibreOffice.

Las cuatro primeras se suelen utilizar en el archivo de arranque (bootstrap.ini:) cuando se utiliza LibreOffice en modo servidor y las siguientes proporcionan algo de información.

ORIGIN

Directorio de instalación de  LibreOffice.

SYSUSERCONFIG

Directorio de la configuración del usuario en su sesión

UNO_USER_PACKAGES_CACHE

Directorio de almacenamiento de las extensiones.

USERNAME

Nombre de cuenta de usuario.

OS

Sistema operativo

TMP

Directorio temporal

PYTHONPATH

Directorio de Python

PATH

Lista de directorios incluidos en el path

LANGUAGE

Código completo del idioma (ej: es_ES.UTF-8)

SYSTEMROOT

Específico de Windows (ej: C:\Windows)

Parámetros de la linea de comandos LibreOffice

En la linea de comandos, los parámetros deben ir precedidos por la ruta al ejecutable programa  ej. C:\Program Files\LibreOffice\program\soffice.exe [parámetros]. Aquí sólo se describen las opciones más útiles para el uso de la linea de comandos en «macros».

Encontrará  instrucciones completas en la siguiente página (EN) (verificado 04/2021):
https://dnimruoynepo.blogspot.fr/2016/12/command-line-arguments-in-libreoffice.html

Ayuda e información

--version

Muestra el número de la versión.

--nstemporarydirectory

(sólo en el entorno de pruebas (sandbox) de  MacOS X)
Devuelve la ruta del dir. temporal del usuario activo.
Prioritario sobre todos los parámetros

Parámetros generales

--quickstart[=no]

[Dés]activa el arranque rápido.

Sólo se admite el valor (no), para desactivar el servicio

--nolockcheck

Desactiva la verificación de instancias remotas durante la instalación.

--infilter={filtre}

Obliga la elección de un tipo de filtro si es posible. Si no es posible
LibreOffice utiliza el filtro disponible para el documento.
Ejemplo:
--infilter="Calc Office Open XML"
--infilter="Text (encoded):UTF8,LF,,,"
Los nombres de los filtros pueden cambiar. Los ejemplos muestran
el uso de ciertos parámetros. Desafortunadamente no es facil
saber la lista de filtros disponibles.

--pidfile={archivo}

Graba el pid de soffice.bin en {archivo}.

--display {pantalla}

Establece la variable de entorno al valor{pantalla}. (compatible
solo en plataformas UNIX)

Control de la interfaz de usuario

--nologo

Desactiva el logotipo de presentación inicial.

--minimized

Se inicia en modo minimizado, y sin mostrar el logotipo inicial.

--nodefault

Se inicia sin ventana de inicio sólo muestra el logotipo

--invisible

Se inicia en modo invisible. No se muestra el logotipo ni la ventana
del programa LibreOffice, los documentos y los diálogos se pueden
controlar y abrir mediante las llamadas a la API. Cuando se utiliza
este parámetro, LibreOffice sólo se puede cerrar usando el
administrador de tareas (Windows) o el comando kill Windows/Unix).
--invisible no se puede usar con --quickstart.

--headless

Se inicia en modo «headless» que permite usar la aplicación sin
ningúna interfaz. Este peculiar modo se utiliza para controlar la
aplicación desde clientes externos mediante llamadas a la API.

--norestore

Desactiva el reinicio y la recuperación de archivos después de un
error del sistema

--safe-mode

Arranque en modo seguro. Este modo permite utilizar un perfil nuevo
y ayuda a restaurar una configuración corrupta.

--accept={UNO-URL}

Permite el uso de una cadena  «UNO Accept String» al crear una
cadena de «UNO Acceptor Threads» para que otros programas se
puedan conectar para acceder a la API.{UNO-URL} se compone de
:uno:connection-type,params; protocol-name,params;ObjectName.
De acuerdo con  el código LibreOffice ObjectName se desestima

--unaccept={UNO-URL}

Cierra un canal de aceptación creado por  --accept.
Utilice --unaccept=all para cerrar todos los canales

Parámetros para el desarrollador

--terminate_after_init

Sale después del inicio (sin carga de documento).

--eventtesting

Sale después de la carga de documentos.

Creación de documentos

Estas opciones permiten crear documentos vacíos del tipo especificado, no es posible usar más que un solo tipo por comando. Cuando se especifica un nombre de archivo, LibreOffice intenta abrir ese archivo mediante el módulo indicado. Si no es posible, el archivo se abre con el más conveniente

Las opciones siguientes crean documentos vacíos del tipo especificado:

 --writer

 --draw

 --base

 --math

 --calc

 --impress

 --global

 --web

Apertura de archivos

Estos argumentos definen como se tratan los nombres de archivos. Un tratamiento nuevo comienza después del argumento y finaliza con el siguiente argumento. El tratamiento por defecto es la apertura de los archivos para su edición,o la creación de nuevos archivos a partir de una plantilla.

-n

Trata los documentos especificados como plantillas para crear documentos nuevos.

-o

Abre los documentos especificados para su edición, se trate de plantillas o no.

--pt {Impresora}

Envía los documentos especificados a la impresora {Impresora}, y

después los cierra.(el logotipo de inicio no se muestra).
- Si se especifica {Impresora} varias veces, sólo se utiliza la última
ocurrencia para todos los documentos. Tenga en cuenta que el parámetro
--printer-name de la opción --print-to-file interfere con {Impresora}.

-p

Envia los archivos especificados a la impresora predeterminada.
El logotipo de inicio no se muestra. Si el nombre de un archivo contiene
espacios debe estar entrecomillado por comillas dobles.

--view

Abre los archivos especificados en modo visualización (sólo lectura).

--show

Abre e inicia la presentación inmediatamente para cada uno de los
archivos especificados. Los archivos se cierran después de la
presentación.
Los archivos que no sean de Impress se abren en modo predeterminado,
independientemente del modo anterior.

-n

Trata los documentos especificados como plantillas para crear documentos nuevos.

--convert-to OutExt[:OutFilterName] [--outdir Directorio]

Conversion de archivos por lotes ( --headless necesario).

OutEx: extensión de los archivos destino
OutFilterName
: filtro de conversion.
- Si no se especifica --outdir, se utiliza el directorio de trabajo en uso
como el directorio de salida.
- Si se utiliza varias veces   --convert-to Se usará el último valor de
OutExt[:OutFilterName].

- Si se utiliza varias veces --outdir sólo se toma en cuenta el último valor.
Ejemplos:

-- convert-to pdf *.doc
-- convert-to pdf:writer_pdf_Export --outdir /home/user *.doc
-- convert-to "html:XHTML Writer File:UTF8" *.doc
-- convert-to "txt:Text (encoded):UTF8" *.doc
Desafortunadamente no es facil saber la lista de filtros disponibles. El uso
de esta opción es muy delicada, pese a su gran utilidad.

--print-to-file [--printer-name Impresora_1] [--outdir Directorio_2]

Impresión de archivos por lotes.
- Si no se especifica --outdir  se utiliza el directorio de trabajo en uso
como el directorio de salida.
- Si se utilizan varias veces --printer-name o –outdir, sólo se toma en
cuenta el último valor de cada uno de ellos.
- Si se espedifican --printer-name o –outdir varias veces, sólo se utiliza la última ocurrencia para todos los documentos.
Tenga en cuenta que el parámetro {Impresora} de la opción}
--printer-name
de la opción --pt interfiere con  --printer-name.

--cat

Envía el contenido de texto de los archivos especificados a la ventana del
procesador de comandos (se debe especificar la opción --headless).
No se puede utilizar con --convert-to.

-env:var[=valor]

Establezca una variable  de bootstrap.
Por ejemplo para establecer una ruta de perfil de usuario:
-env:UserInstallation=file:///tmp/test
Tampoco es facil conocer la lista de variables disponibles

Llamada a una macro desde la linea de comandos

Sintáxis

Macro global

{soffice} "macro:///biblioteca/modulo/macro[(parametros)]"

Macro en un documento ODF

{soffice} ruta/a/doc.odf "macro://./biblioteca/modulo/macro[(parametros)]"

Instalar una macro... mediante una macro

Principio

Un archivo «contenedor» (Writer, Calc, etc.) contiene la macro que desea instalar y una macro de instalación.

La macro a instalar

Colóquela en su propia biblioteca en el documento contenedor.

La macro instaladora

Su papel es copiar la biblioteca que se desea instalar al contenedor global Mis Macros.  Se muestra un ejemplo del proceso de instalación de una biblioteca tipo «código»:

  Dim oSrcLib As Object  'biblioteca origen (en el documento)
 Dim oDestLib As Object  'biblioteca destino (en 'Mis Macros')
 Dim i As Integer
 Dim SrcModules() As String
 'se crea la biblioteca destino si no existe
 If Not GlobalScope.BasicLibraries.hasByName("bibl destino") Then
   
GlobalScope.BasicLibraries.createLibrary("bibl destino")
 End If
 'se copian los módulos
 If BasicLibraries.hasByName("bibl origen") Then
   BasicLibraries.loadLibrary("bibl origen")
   oSrcLib  = BasicLibraries.getByName("bibl origen")
   oDestLib = GlobalScope.BasicLibraries.getByName("bibli destino")
   SrcModules = oSrcLib.getElementNames()
   'instalación de módulos uno a uno
   i = LBound(SrcModules())
   Do While (i <= uBound(SrcModules()))
     If Not oDestLib.hasByName(SrcModules(i)) Then
       oDestLib.insertByName(SrcModules(i), oSrcLib.getByName(SrcModules(i)))
     End If
     i = i + 1
   Loop
 End If

Crear una extensión:

Consiste en empaquetar sus macro en forma de extensión para una mejor difusión.

Contenido