views:

355

answers:

2

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.

A: 

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

fviktor
No, the function only introduces a file into the OpenDocument file (which is a renamed ZIP file). But following that I looked at the XML code for an image, which should be very easy to replace using a DOM parser, I think this will work. Thanks!
Pekka
+2  A: 

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.

alexanderpas
Pekka, wouldn't it be a better solution than that `AddFileToDoc` I mentioned? It looks better to me. I wasn't aware of odtPHP. Good to know about it. Thanks alexanderpas!
fviktor
This looks like exactly what I'm looking for, many thanks!
Pekka