2018-03-18

0: The Table of Contents of the Series, 'Exploiting an Open-Source Office Suite'

| The table of contents of this series | The next article in this series>

Table of Contents


1: LibreOffice or OpenOffice with Java, C++, C#, VB.NET, Python, JavaScript, and/or so on
Via UNO, not Microsoft COM. From inside (macros) and/or outside (external programs). The GUI and/or key bindings augmented. Call 'soffice'?
2: UNO, Its Essence and Its Relationship to LibreOffice or OpenOffice
UNO isn't just a peripheral interface for LibreOffice or OpenOffice. A poor understanding of its essence and implications may be confining you.
3: Basic Elements of UNO
Slave is anyone who blindly accepts someone's decisions. You make your decisions based on your knowledge. Learning the basics is the starting point.
4: Deciphering the Official Documents of LibreOffice or OpenOffice
We may and should admit that they are not well-written. A culprit is the lax terminology used there, which will be disentangled here.
5: Building an Environment for Developing UNO Programs in Linux
For developing macros, external UNO programs, and/or UNO extensions in Java, C++, and/or Python.
6: Building an Environment for Developing UNO Programs in Windows
For developing macros, external UNO programs, and/or UNO extensions in Java, C++, .NET Framework (usually C# and/or Visual Basic.NET), and/or Python.
7: Building Any Sample Project of This Site
Have gotten a sample project from this site? Here is how to build the project.
8: Making the LibreOffice or Apache OpenOffice Instance a UNO Server
Start an acceptor of TCP/IP socket or named pipe in order to read/write an office document or handle the instance via UNO from your external program.
9: 'Hi, Console Java UNO Clients', a Sample
Connecting your program to the LibreOffice/OpenOffice instance (or any UNO server), in order to read/write an office document or handle the instance.
10: 'Hi, GUI Java UNO Clients', a Sample
Connecting your program to the LibreOffice/OpenOffice instance (or any UNO server), and detecting the disconnection.
11: 'Hi, Console C++ UNO Clients', a Sample
Connecting your program to the LibreOffice/OpenOffice instance (or any UNO server), in order to read/write an office document or handle the instance.
12: Execute UNO Dispatch Command and Get All Information in Java
Your lazy way may be missing some useful information that is available from the execution.
13: How Any 'soffice' or 'soffice.exe' Execution Works
Um? Why does this 'soffice' invocation return immediately? Well, why is this invocation so slow?
14: 'Hi, Console C# UNO Clients', a Sample
Likewise for VB.NET. Connecting your program to the LibreOffice/OpenOffice instance, in order to read/write an office document or handle the instance.
15: How to Optimally Use LibreOffice or Apache OpenOffice as a Files Converter, Part 1 (the Concept)
'soffice --convert-to' from a program is inefficient and restrictive. No need for any 3rd-party tool. A better way. Applicable to also OpenOffice.
16: Optimally Use LibreOffice as a Files Converter (a Java Implementation)
Between OpenDocument/Microsoft Office/etc. formats and to the PDF/CSV format, fast and versatile with the document possibly tweaked. A workable sample.
17: An Attempt to Structurize LibreOffice/OpenOffice Basic Code
LibreOffice/OpenOffice Basic does not allow creating class. Here is an attempt to structurize one's Basic code nevertheless.
18: Optimally Use LibreOffice as a Files Converter (a C++ Implementation)
Between OpenDocument/Microsoft Office/etc. formats and to the PDF/CSV format, fast and versatile with the document possibly tweaked. A workable sample.
19: Untold or Incorrectly Told Basics of LibreOffice Basic
I cannot find any document that satisfactorily addresses some of my basic concerns about LibreOffice/OpenOffice Basic. Such concerns are tackled here.
20: Optimally Use LibreOffice as a Files Converter (a C# Implementation)
Between OpenDocument/Microsoft Office/etc. formats and to the PDF/CSV format, fast and versatile with the document possibly tweaked. A workable sample
21: Execute UNO Dispatch Command and Get All Information in C++
Your lazy way may be missing some useful information that is available from the execution.
22: Execute UNO Dispatch Command and Get All Information in C#
Your lazy way may be missing some useful information that is available from the execution.
23: Encrypt an Office File with Opening Password from Program
Encrypt any OpenDocument 'odt', 'ods', or 'odp' file or Microsoft Office 'doc', 'docx', 'xls', 'xlsx', or 'pptx' file from your program.
24: Execute UNO Dispatch Command and Get All Information in Basic
In LibreOffice or Apache OpenOffice Basic. Your lazy way may be missing some useful information that is available from the execution.
25: Creating a LibreOffice or Apache OpenOffice Daemon
As a files conversion server, etc.. One that doesn't brutally kill the office instance together with the ongoing user requests. With a workable sample
26: Creating a LibreOffice or Apache OpenOffice Windows Service
As a files conversion server, etc.. One that doesn't brutally kill the office instance together with the ongoing user requests. With a workable sample
27: Spread Sheet to CSV File in Any Format from Your Program
Writing in a 'tab-separated value', 'fixed-length record', 'text-value-quoted', and/or so on format, using LibreOffice or Apache OpenOffice and UNO.
28: 'Hi, Console Python UNO Clients', a Sample
Connecting your program to the LibreOffice/OpenOffice instance (or any UNO server), in order to read/write an office document or handle the instance.
29: Optimally Use LibreOffice as a Files Converter (a Python Implementation)
Between OpenDocument/Microsoft Office/etc. formats and to the PDF/CSV format, fast and versatile with the document possibly tweaked. A workable sample.
30: Dismiss 'soffice --convert-to' and Directly Use the UNO API
'soffice --convert-to' is good for only some limited cases. Why, with some diagrams. Fortunately, we can directly use the UNO API, instead, easily.
31: Open/Convert Password-Encrypted File with LibreOffice UNO
Any OpenDocument 'odt'/'ods'/etc. file, any Microsoft Office 'doc'/'docx'/'xls'/'xlsx'/etc. file, or any PDF file. Applicable also to OpenOffice.
32: Use Any Text Editor Instead of the LibreOffice Basic IDE
It is not just imagination that the LibreOffice or Apache OpenOffice Basic IDE is not-so-un-clumsy. You do not have to use it.
33: Optimally Use LibreOffice as a Files Converter (a Basic Implementation)
Between OpenDocument/Microsoft Office/etc. formats and to the PDF format, fast and versatile. The file can be tweaked. Applicable to also OpenOffice.
34: Write All the Spreadsheets to CSV Files with LibreOffice UNO
All the sheets in a spread sheets document, not just the 1st sheet. Applicable also to Apache OpenOffice.
35: Execute UNO Dispatch Command and Get All Information in Python
Your lazy way may be missing some useful information that is available from the execution.
36: Setting Editing Password into an OpenDocument File with UNO
Using LibreOffice or OpenOffice, for an OpenDocument ('.odt', '.ods', or '.odp') file, from Java, C++, C#, Python, BeanShell, JavaScript, or Basic
37: Editing Password into a Binary Word/Excel File with UNO
Using LibreOffice or OpenOffice, for a Microsoft '.doc' or .'xls' file, from Java, C++, C#, Python, BeanShell, JavaScript, or Basic
38: Set the Size of Any Page of Word Processor Document with UNO
Any word processor document typically associated with an OpenDocument Text/Office Open XML Document/Microsoft Word file, using LibreOffice
39: Set the Size of Page of Spread Sheets Document with UNO
Any spread sheets document typically associated with an OpenDocument Spreadsheet/Office Open XML Workbook/Microsoft Excel file, using LibreOffice
40: Set Any Page Property of Spread Sheets Document with UNO
Any spread sheets document typically associated with an OpenDocument Spreadsheet/Office Open XML Workbook/Microsoft Excel file, using LibreOffice
41: Set Any Page Property of Word Processor Document with UNO
Any word processor document typically associated with an OpenDocument Text/Office Open XML Document/Microsoft Word file, using LibreOffice
42: Editing Password into an Office Open XML File with UNO
Using LibreOffice or OpenOffice, for an Office Open XML .docx, .xlsx, or .pptx file, from Java, C++, C#, Python, BeanShell, JavaScript, or Basic
43: Export Office Document into a PDF as per Full Specs with UNO
Exported sections, images quality, watermark, tagging, form fields format, whether bookmarks or comments, encrypting, restrictions, signing, etc.
44: Defining Any UNO Component in C++
Typically in order to create a listener. Some Knowledge on UNO garbage collection, weak pointing, etc. is due and here.
45: How to Use or Not Use '::com::sun::star::uno::Reference'
In order to avoid fatal errors (like segmentation fault errors), inadvertent inefficiencies, and tedious coding, in handling local/remote UNO objects
46: Using an External Python for LibreOffice or OpenOffice
With a binary LibreOffice/OpenOffice distribution, for this article. Not every version is OK. For using a full and bug-fixed Python.
47: Using Python Instead of Basic For Your LibreOffice
If your LibreOffice shows not-so-advisable Basic as the sole macro language option, you can add Python.
48: Create User/Application-Owned Python Macro for LibreOffice
Python will be far better than Basic, for many. Creating Python macros is not difficult, suspicious, or nerdish. Also for OpenOffice.
49: Create In-Document Python Macro for LibreOffice/OpenOffice
The GUI looks as though you cannot, but actually, you can. So, you do not need to use Basic just in order to locate your macro in-document.
50: Create LibreOffice Extension That Contains Python Macros
This technique should work for also your OpenOffice extension. Using the extension, you can distribute your Python macros handily.
51: Invoke Any LibreOffice or OpenOffice Macro from Your Program
"Any" means user-owned, application-owned, in-document, or in-extension, and Python or whatever. No, we do not call 'soffice', which is handicapped.
52: The Common Preparation for Starting Java UNO Programming
The common preparation is usually enough unless you are going to create a UNO interface. Really, it is simple.
53: Import Any Module into Your LibreOffice Python Macro, Part 1
Or into any module imported by your macro. This part is for except for importing in-document modules.
54: Import Any Module into Your LibreOffice Python Macro, Part 2
Also any in-document module can be imported into your macro or any module imported by your macro. Here is how.
55: Read and Write Any LibreOffice Document from and to a Stream
Or any OpenOffice, Microsoft Office, or similar document. In order to store the document in a database, a remote server, or whatever.
56: Basics of Creating Your LibreOffice or OpenOffice Extension
For registering macros (Python, Basic, etc.), UNO interfaces, UNO components, UNO services, key bindings, menu items, and/or tool buttons.
57: Registering Key Bindings for LibreOffice or OpenOffice
For invoking macros (in Python, Java, JavaScript, BeanShell, or Basic). Via extensions. Per document type.
58: Register Menu Items/Tool Buttons for LibreOffice/OpenOffice
For invoking macros (in Python, Java, JavaScript, BeanShell, or Basic). Via extensions. Per document type.
59: Put Basic Macros into a LibreOffice/OpenOffice Extension
In order to package them together with key bindings/menu items/tool buttons/UNO interfaces/UNO components/UNO services, and maybe to distribute it.
60: Create and Register UNO Interface/Generate Mapping Images
In order to create your own UNO component, in Java, C++, C#, or Python. Generate the Java, C++, C#, and Python mapping images.
61: Create Any UNO Component in Java
For example, a listener, a Swing GUI component, a hard-to-be-implemented-in-a-macro-language function component, etc.
62: Create Any Global UNO Service in Java
In order to instantiate the UNO component from a remote programming language environment or to create an artifact like a spread sheet cell function.
63: Create Any UNO Component in C#
Typically, a listener in a LibreOffice or OpenOffice client, for example for dispatch commands, but not necessarily so.
64: Create Any UNO Component in Python
Typically, a listener in a macro or a LibreOffice or OpenOffice client, for example for dispatch commands, but not necessarily so.
65: Connection-Aware Possibly Remote Python External UNO Client
To incorporate the LibreOffice/OpenOffice functionality into your independent (non-macro) program, possibly a long-standing one like a Web application
66: Connection-Aware Possibly Remote C# External UNO Client
To incorporate the LibreOffice/OpenOffice functionality into your independent (non-macro) program, possibly a long-standing one like a Web application
67: Connection-Aware Possibly Remote C++ External UNO Client
To incorporate the LibreOffice/OpenOffice functionality into your independent (non-macro) program, possibly a long-standing one like a Web application
68: Connection-Aware Possibly Remote Java External UNO Client
To incorporate the LibreOffice/OpenOffice functionality into your independent (non-macro) program, possibly a long-standing one like a Web application
69: Creating Any UNO Object Singleton in LibreOffice/OpenOffice
Creating any 'singleton' UNOIDL entity does not create any singleton, but a singleton getter. Then, how can any singleton be created? Here is how.
70: Create Any Global UNO Service in C++
In order to instantiate the UNO component from a remote programming language environment or to create an artifact like a spread sheet cell function.
71: Create Any Global UNO Service in Python
In order to instantiate the UNO component from a remote programming language environment or to create an artifact like a spread sheet cell function.
72: Use Any Dialog from Non-Basic Macro or Non-Macro for LibreOffice/OpenOffice
Any dialog can be invoked and handled from non-Basic (Java, C++, C#, Python, etc.) macro or non-macro. Events can be received from the dialog.
73: Handle Each Type of Dialog Controls from Non-Basic Macro or Non-Macro for LibreOffice/OpenOffice
Label, Text, Command, Image, Check, Option, List, Combo, Scroll, Progress, Date, Time, Numeric, Formatted, File, Tree, Grid, Hyperlink, Spin, etc.


| The table of contents of this series | The next article in this series>