Soffice

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen

soffice is the command-line interface for LibreOffice (for Bash and maybe other shells). The soffice command allows users to perform various operations on LibreOffice documents without opening the graphical user interface (GUI). This command is useful for automating tasks such as document conversion, printing, and macro execution.

Key uses:

  • File conversion
  • Batch processing
  • Running macros
  • Printing documents
  • Running in headless mode

Example: Export to CSV

soffice --headless --convert-to csv --outdir /path/to/output /path/to/yourfile.ods

Example: Automatic import into MySQL

#!/bin/bash

# Define paths and filenames
ODS_FILE="/path/to/yourfile.ods"
OUTPUT_DIR="/path/to/output"
DATABASE_NAME="your_database_name"
MYSQL_USER="root"
MYSQL_PASSWORD="yourpassword"

# Convert ODS to CSV
soffice --headless --convert-to csv --outdir "$OUTPUT_DIR" "$ODS_FILE"

# Import CSV to MySQL
for csvfile in "$OUTPUT_DIR"/*.csv; do
    tablename=$(basename "$csvfile" .csv)
    mysql -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" \
       --local-infile=1 -e \
    "LOAD DATA LOCAL INFILE '$csvfile' INTO TABLE $DATABASE_NAME.$tablename FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;"
done

Appendix: soffice --help

$ soffice --help

LibreOffice 6.4.7.2 40(Build:2)

Usage: soffice [argument...]
       argument - switches, switch parameters and document URIs (filenames).   

Using without special arguments:                                               
Opens the start center, if it is used without any arguments.                   
   {file}              Tries to open the file (files) in the components        
                       suitable for them.                                      
   {file} {macro:///Library.Module.MacroName}                                  
                       Opens the file and runs specified macros from           
                       the file.                                               

Getting help and information:                                                  
   --help | -h | -?    Shows this help and quits.                              
   --helpwriter        Opens built-in or online Help on Writer.                
   --helpcalc          Opens built-in or online Help on Calc.                  
   --helpdraw          Opens built-in or online Help on Draw.                  
   --helpimpress       Opens built-in or online Help on Impress.               
   --helpbase          Opens built-in or online Help on Base.                  
   --helpbasic         Opens built-in or online Help on Basic scripting        
                       language.                                               
   --helpmath          Opens built-in or online Help on Math.                  
   --version           Shows the version and quits.                            
   --nstemporarydirectory                                                      
                       (MacOS X sandbox only) Returns path of the temporary    
                       directory for the current user and exits. Overrides     
                       all other arguments.                                    

General arguments:                                                             
   --quickstart[=no]   Activates[Deactivates] the Quickstarter service.        
   --nolockcheck       Disables check for remote instances using one           
                       installation.                                           
   --infilter={filter} Force an input filter type if possible. For example:    
                       --infilter="Calc Office Open XML"                     
                       --infilter="Text (encoded):UTF8,LF,,,"                
   --pidfile={file}    Store soffice.bin pid to {file}.                        
   --display {display} Sets the DISPLAY environment variable on UNIX-like      
                       platforms to the value {display} (only supported by a   
                       start script).                                          

User/programmatic interface control:                                           
   --nologo            Disables the splash screen at program start.            
   --minimized         Starts minimized. The splash screen is not displayed.   
   --nodefault         Starts without displaying anything except the splash    
                       screen (do not display initial window).                 
   --invisible         Starts in invisible mode. Neither the start-up logo nor 
                       the initial program window will be visible. Application 
                       can be controlled, and documents and dialogs can be     
                       controlled and opened via the API. Using the parameter, 
                       the process can only be ended using the taskmanager     
                       (Windows) or the kill command (UNIX-like systems). It   
                       cannot be used in conjunction with --quickstart.        
   --headless          Starts in "headless mode" which allows using the      
                       application without GUI. This special mode can be used  
                       when the application is controlled by external clients  
                       via the API.                                            
   --norestore         Disables restart and file recovery after a system crash.
   --safe-mode         Starts in a safe mode, i.e. starts temporarily with a   
                       fresh user profile and helps to restore a broken        
                       configuration.                                          
   --accept={connect-string}  Specifies a UNO connect-string to create a UNO   
                       acceptor through which other programs can connect to    
                       access the API. Note that API access allows execution   
                       of arbitrary commands.                                  
                       The syntax of the {connect-string} is:                  
                         connection-type,params;protocol-name,params           
                       e.g.  pipe,name={some name};urp                         
                         or  socket,host=localhost,port=54321;urp              
   --unaccept={connect-string}  Closes an acceptor that was created with       
                       --accept. Use --unaccept=all to close all acceptors.    
   --language={lang}   Uses specified language, if language is not selected    
                       yet for UI. The lang is a tag of the language in IETF   
                       language tag.                                           

Developer arguments:                                                           
   --terminate_after_init                                                      
                       Exit after initialization complete (no documents loaded)
   --eventtesting      Exit after loading documents.                           

New document creation arguments:                                               
The arguments create an empty document of specified kind. Only one of them may 
be used in one command line. If filenames are specified after an argument,     
then it tries to open those files in the specified component.                  
   --writer            Creates an empty Writer document.                       
   --calc              Creates an empty Calc document.                         
   --draw              Creates an empty Draw document.                         
   --impress           Creates an empty Impress document.                      
   --base              Creates a new database.                                 
   --global            Creates an empty Writer master (global) document.       
   --math              Creates an empty Math document (formula).               
   --web               Creates an empty HTML document.                         

File open arguments:                                                           
The arguments define how following filenames are treated. New treatment begins 
after the argument and ends at the next argument. The default treatment is to  
open documents for editing, and create new documents from document templates.  
   -n                  Treats following files as templates for creation of new 
                       documents.                                              
   -o                  Opens following files for editing, regardless whether   
                       they are templates or not.                              
   --pt {Printername}  Prints following files to the printer {Printername},    
                       after which those files are closed. The splash screen   
                       does not appear. If used multiple times, only last      
                       {Printername} is effective for all documents of all     
                       --pt runs. Also, --printer-name argument of             
                       --print-to-file switch interferes with {Printername}.   
   -p                  Prints following files to the default printer, after    
                       which those files are closed. The splash screen does    
                       not appear. If the file name contains spaces, then it   
                       must be enclosed in quotation marks.                    
   --view              Opens following files in viewer mode (read-only).       
   --show              Opens and starts the following presentation documents   
                       of each immediately. Files are closed after the showing.
                       Files other than Impress documents are opened in        
                       default mode , regardless of previous mode.             
   --convert-to OutputFileExtension[:OutputFilterName] \                      
     [--outdir output_dir] [--convert-images-to]                               
                       Batch convert files (implies --headless). If --outdir   
                       isn't specified, then current working directory is used 
                       as output_dir. If --convert-images-to is given, its     
                       parameter is taken as the target filter format for *all*
                       images written to the output format. If --convert-to is 
                       used more than once, the last value of                  
                       OutputFileExtension[:OutputFilterName] is effective. If 
                       --outdir is used more than once, only its last value is 
                       effective. For example:                                 
                   --convert-to pdf *.odt                                      
                   --convert-to epub *.doc                                     
                   --convert-to pdf:writer_pdf_Export --outdir /home/user *.doc
                   --convert-to "html:XHTML Writer File:UTF8" \             
                                --convert-images-to "jpg" *.doc              
                   --convert-to "txt:Text (encoded):UTF8" *.doc              
   --print-to-file [--printer-name printer_name] [--outdir output_dir]         
                       Batch print files to file. If --outdir is not specified,
                       then current working directory is used as output_dir.   
                       If --printer-name or --outdir used multiple times, only 
                       last value of each is effective. Also, {Printername} of 
                       --pt switch interferes with --printer-name.             
   --cat               Dump text content of the following files to console     
                       (implies --headless). Cannot be used with --convert-to. 
   --script-cat        Dump text content of any scripts embedded in the files  
                       to console (implies --headless). Cannot be used with    
                       --convert-to.                                           
   -env:<VAR>[=<VALUE>] Set a bootstrap variable. For example: to set          
                       a non-default user profile path:                        
                       -env:UserInstallation=file:///tmp/test                  

Ignored switches:                                                              
   -psn                Ignored (MacOS X only).                                 
   -Embedding          Ignored (COM+ related; Windows only).                   
   --nofirststartwizard Does nothing, accepted only for backward compatibility.
   --protector {arg1} {arg2}                                                   
                       Used only in unit tests and should have two arguments.