Gerar documentos ODT com imagens dinâmicas no PHP
-
21-09-2019 - |
Pergunta
Eu mantenho alguns bancos de dados da Web com base no PHP e MySQL em um pacote de hospedagem compartilhada. Os bancos de dados têm um mecanismo para o usuário fazer upload de documentos do OpenOffice com os espaços reservados:
[person.name] [person.address] [person.postcode]
Eu então uso esta ótima ferramenta PHP Para executar o documento do OpenOffice e inserir valores do banco de dados nele. O resultado é novamente, um documento do OpenOffice.
O que não pode fazer é imagens dinâmicas.
Alguém conhece uma solução - de preferência somente PHP - para inserir imagens em documentos do OpenOffice?
- Eu sei Puno. Não posso usá -lo neste contexto porque é hospedagem compartilhada.
- Eu sei que o OpenOffice pode ser executado como um daemon - idem.
- Eu sei phpdocwriter. Foi ótimo para arquivos SXW, mas está morto agora.
- Eu sei que o Opendocument é uma coleção de arquivos XML em um arquivo zip. Uma vez tentei adicionar programaticamente uma legenda a todas as imagens em um documento ODT. Isso me levou enraizando. Olho com admiração sobre os desenvolvedores que trabalham com o formato, mas não é para mim.
Eu realmente apreciaria qualquer dica sobre as soluções existentes.
Solução
Eu penso odtphp Pode ser o que você está procurando
Parece ser capaz de inserir imagens em um espaço reservado no documento e lê simplesmente a partir de uma matriz para ver qual imagem colocar.
http://www.odtphp.com/index.php?i=tutorials&p=tutorial5
Agora, se você fizer isso como um pós-processo após o seu código atual ou simplesmente usá-lo em vez de TBS, você tem tudo o que precisa
Como alternativa, você pode incluir uma imagem padrão com um determinado nome de arquivo no seu documento e simplesmente substituir esse ImageFile no arquivo.
Outras dicas
Há uma nova versão do tbsooo, é OPTBS E possui um recurso para inserir/alterar uma imagem no arquivo.
Você tentou usar o AddFileToDoc
Método para adicionar uma imagem ao documento?
A documentação sobre este método está aqui: