1. Go to this page and download the library: Download sboden/odtphp library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
sboden / odtphp example snippets
use Odtphp\Odf;
// Create a new ODT document from a template
$odt = new Odf("template.odt");
// Set simple text variables
$odt->setVars('company_name', 'ACME Corporation');
$odt->setVars('current_date', date('Y-m-d'));
// Save the modified document
$odt->saveToDisk('output.odt');
use Odtphp\Odf;
// Create ODT document with custom configuration
$config = [
'DELIMITER_LEFT' => '{',
'DELIMITER_RIGHT' => '}',
];
$odt = new Odf("invoice_template.odt", $config);
// Insert a company logo
$odt->setImage('company_logo', 'path/to/logo.png');
// Create a repeatable segment for line items
$lineItems = $odt->setSegment('invoice_items');
foreach ($invoiceData['items'] as $item) {
$lineItems->setVars('item_name', $item->name);
$lineItems->setVars('item_price', number_format($item->price, 2));
$lineItems->setVars('item_quantity', $item->quantity);
$lineItems->merge();
}
// Set summary variables
$odt->setVars('total_amount', number_format($invoiceData['total'], 2));
$odt->setVars('invoice_number', $invoiceData['number']);
// Save the completed invoice
$odt->saveToDisk('invoice.odt');
// Basic string properties
$odf->setCustomProperty('Author', 'John Doe');
$odf->setCustomProperty('Department', 'Engineering');
// Dates should use YYYY-MM-DD format
$odf->setCustomProperty('Creation Date', '2024-01-20');
// Special characters are encoded by default
$odf->setCustomProperty('Note', '<important> & urgent'); // Will be encoded
$odf->setCustomProperty('Note', '<important> & urgent', FALSE); // Won't be encoded
// Using centimeters (original function)
$odf->setImage('logo', 'path/to/logo.png', -1, 5, 7.5); // 5cm width, 7.5cm height
$odf->setImage('photo', 'path/to/photo.jpg', 1, 10, 15, 2, 2); // On page 1 with 2cm offsets
// Using millimeters
$odf->setImageMm('logo', 'path/to/logo.png', -1, 50, 75); // 50mm width, 75mm height
$odf->setImageMm('photo', 'path/to/photo.jpg', 1, 100, 150, 20, 20); // On page 1 with 20mm offsets
// Using pixels (automatically converts to mm)
$odf->setImagePixel('logo', 'path/to/logo.png', -1, 189, 283); // 189px ≈ 5cm, 283px ≈ 7.5cm
$odf->setImagePixel('photo', 'path/to/photo.jpg', 1, 378, 567, 76, 76); // On page 1 with 76px offsets
// Keep original image size
$odf->setImage('icon1', 'path/to/icon.png'); // Will convert to cm
$odf->setImageMm('icon2', 'path/to/icon.png'); // Will convert to mm
$odf->setImagePixel('icon3', 'path/to/icon.png'); // Will keep original pixel dimensions
use Odtphp\Odf;
use Odtphp\Exceptions\OdfException;
try {
$odt = new Odf("template.odt");
// This will throw an exception if the variable doesn't exist
$odt->setVars('non_existent_variable', 'Some Value');
} catch (OdfException $e) {
// Handle template-related errors
error_log("ODT Processing Error: " . $e->getMessage());
}