Generate ODT documents with dynamic images in PHP

3.7k views Asked by At

I maintain a couple of web databases based on PHP and mySQL on a shared hosting package. The databases have a mechanism for the user to upload OpenOffice documents with placeholders:

[person.name] [person.address] [person.postcode]

I then use this great PHP tool to run through the OpenOffice document and insert values from the database into it. The result is again, an OpenOffice document.

What it can't do is dynamic images.

Does anybody know a - preferably PHP-only - solution to insert images into OpenOffice documents?

  • I know PUNO. Can't use it in this context because it's shared hosting.
  • I know OpenOffice can be run as a daemon - ditto.
  • I know phpDocWriter. It was great for SXW files but is dead now.
  • I know OpenDocument is a collection of XML files in a ZIP file. I once tried to programmatically add a caption to every image in a ODT document. It drove me fricking crazy. I look with admiration upon developers who work with the format, but it's not for me.

I would really appreciate any hints on existing solutions.

3

There are 3 answers

1
alexanderpas On BEST ANSWER

I think odtPHP might be what you're looking for

is seems to be able to insert images on a placeholder in the document and reads simply from an array to see which image to place.

http://www.odtphp.com/index.php?i=tutorials&p=tutorial5

Now, if you do this as a post-process after your current code, or simply use it instead of TBS, you got everything you need IMHO

Alternatively, you can include a default image with a certain filename in your document, and simply replace that imagefile in the archive.

1
fviktor On

Did you try to use the AddFileToDoc method to add an image to the document?

The documentation on this method is here:

http://www.tinybutstrong.com/tbsooo.php#AddFileToDoc

0
Skrol29 On

There is a new version of TbsOOo, it's OpenTBS and it has a feature for inserting/changing a picture in the file.

http://www.tinybutstrong.com/opentbs.php