About News Downloads Installation Documentation FAQ Links Contact

About Puno

This project is a PHP module (PHP5 and Linux/Unix only) written in C++ that brings the OpenOffice.org UNO Programming API to the PHP userspace.

You can use it to write scripts that create, modify, read and save OpenOffice.org documents (Writer, Spreadsheet, Drawing). Also, you can export these documents in various formats, like PDF or HTML for example.

Here is a sample php script and this is the document it generates.

It can be installed on any Linux/Unix platform where PHP5 and OpenOffice.org are also available.

If you need more information about the OpenOffice.org API and what you can do with it, please read the Developers Guide - First Steps chapter.


May 14, 2008 - Version 0.6 Released. This version corrects some bugs related to the building process when OpenOffice SDK 2.3 and 2.4 are used.

April 14, 2007 - Version 0.5 Released. Puno's first public release is out.

April 05, 2007 - Web Site lauched. The website, hosted on SourceForge, is online.

Some Examples

Here you can find some code examples that will help you get started with UNO. Those are the same examples from the Developers Guide, but written in PHP.

General Programming Guidelines

Puno uses the UNO Reflection API to access objects and execute methods from the OpenOffice.org API. PHP functions and methods names are case-insentive, but those accessed through the Reflection API are not. This means that you must always write object names exactly as they are documented in the Developers Guide. This rule is valid for object attributes and method names as well.

API defined structs are also created through the Reflection API. For this purpose, the special function create_struct is available. It takes just one parameter, the name of the struct to be created.

Differently from the Java and C++ bindings, in PHP it is not necessary to query interfaces from objects or services. This is automatically done by the Reflection API. So you just need to call the desired method from the object and the correct interface will be used.

Some Technical Information

In order to access the Office using the UNO API, your OpenOffice.org must be running with Java support enabled and listening on a TCP/IP socket.
This is not done by default, so you must either modify the configuration file or start the Office with the following line:
"<OFFICEPATH>/program/soffice accept=socket,port=8100;urp;"
For a more complete explanation, consult the Configuration Section in the Developers Guide - First Steps chapter.

IMPORTANT: This extension is still in Beta stage, so you should consider not using it on a production environment.

SourceForge.net Logo