I’m working oh hobby project on a free time, and one of the tasks here is to generate ODT file, containing output from the database. The output library i’ve chosen is PHP-ODT. It’s kind of basic, but allows to create ODT documents on the fly.

And now, lessons learned

Allways provide file size.

This code will create corrupt file, according to LibreOffice: The correct code is:

 header(“Content-Description: File Transfer”);
header(“Content-Type: application/vnd.oasis.opendocument.text”);
header(“Content-Disposition: attachment; filename=\”” . $ODTFile .”\”” );
readfile($ODTtmpFile);

 header(“Content-Description: File Transfer”);
header(“Content-Type: application/vnd.oasis.opendocument.text”);
header(‘Content-Length: ‘ . filesize($ODTtmpFile));
header(“Content-Disposition: attachment; filename=\”” . $ODTFile .”\”” );
readfile($ODTtmpFile);

It is possible to add hierarchical styles

Not in the base code yet

$pStyleDate = new ParagraphStyle(‘revDate’);

$pStyleDateStrike = new ParagraphStyle(‘revDate-strike’);
$pStyleDateStrike->setAsChild(‘revDate’);

It is possible to add text decorations in the paragraph level

Again, not in the base code yet:

$pStyleDateStrike->setLineThrough(StyleConstants::SINGLE);

It is possible to merge cells in the table

Well, not in the base code and horizontally only:

$hSpan=array(“”,””,””);

$cRow = array($hSpan,$pRev,$pDate,$pMemo);
$table->addRows(array($cRow));