OpenTBSBundle for Symfony
This bundle is just a convenient way to use OpenTBS, all the credits go to Skrol29 and the TinyButStrong team. http://www.tinybutstrong.com/, (*1)
OpenTBS - create OpenOffice and Ms Office documents with PHP (and Symfony), (*2)
Introduction
(Taken from http://www.tinybutstrong.com/plugins/opentbs/tbs_plugin_opentbs.html), (*3)
OpenTBS is a PHP tool to produce any OpenOffice and Ms Office documents with templates., (*4)
OpenTBS can merge any OpenDocument and Open XML files. It autommatically reconize extensions: odt, ods, odg, odf, odm, odp, ott, ots, otg, otp, docx, xlsx, pptx.
In fact it can merge any XML or Text file saved in a zip container (which is the case for both OpenDocuments and OpenXML documents)., (*5)
What is special to OpenTBS:
* Design your templates directly with OpenOffice or MS Office.
* No exe file needed to merge documents.
* No temporary files needed to merge documents.
* Output directly as an http download, a new file on the disk, or as a string (for file attachment for example).
* Works with both PHP 4 and PHP 5., (*6)
Versions included
TinyButStrong - 3.9.0, (*7)
OpenTBS - 1.9.4, (*8)
Requirements
- Symfony2
- PHP needs to be a minimum version of PHP 5.3.2 (for Symfony2)
- It is better to have the Zlib extension enabled on your PHP installation. If it's not, here is what to do.
Installation
Step 1: Download the bundle using composer
Add the following in your composer.json:, (*9)
{
"require": {
"mbence/opentbs-bundle": "dev-master"
}
}
Then download / update by running the command:, (*10)
``` bash
$ php composer.phar update mbence/opentbs-bundle, (*11)
Composer will install the bundle to your project's `vendor/mbence/opentbs-bundle` directory.
### Step 2: Enable the bundle in your AppKernel
```php
<?php
// app/AppKernel.php
public function registerBundles()
{
$bundles = array(
// ...
new MBence\OpenTBSBundle\OpenTBSBundle(),
);
}
Now you can use the 'opentbs' service.
Using OpenTBSBundle
First you need to define the variables in your docx template (you can use any other supported document format)., (*12)
... some text in a word file with a `[client.name]` variable ...
In TBS you always need a variable base client
and a variable name name
., (*13)
Then in your controller you need to get the OpenTBS service, load your template and merge the fields (eg. replace the teplate variables)., (*14)
// get the service
$TBS = $this->container->get('opentbs');
// load your template
$TBS->LoadTemplate('template.docx');
// replace variables
$TBS->MergeField('client', array('name' => 'Ford Prefect'));
// send the file
$TBS->Show(OPENTBS_DOWNLOAD, 'file_name.docx');
A note for onshow automatic variables:
You could define your variables within the onshow
base, (like onshow.name
), but I would not recommend this practice for it will only work if you use GLOBAL variables., (*15)
read the TBS manual at http://www.tinybutstrong.com/manual.php, (*16)
and the OpenTBS plugin documentation at http://www.tinybutstrong.com/plugins/opentbs/tbs_plugin_opentbs.html, (*17)