É possível gerar formatos diferentes de .docx e .odt com o plugin TinyButStrong e OpenTBS
Pergunta
Eu tenho um módulo que mescla um documento dos registros do banco de dados e .docx
ou .odt
modelo de documento.
Eu tenho que sair .docx
, .odt
ou .pdf
.Para saída nos formatos Microsoft e Open, não há problema, tudo funciona corretamente.
Mas o que eu quero saber é: posso gerar a saída em um formato (como XML ou HTML) que possa usar para criar posteriormente um documento PDF?
Se não puder, existem bibliotecas que fornecem um recurso de mesclagem de documentos como:
DOCX (or ODT) + database record => PDF
E não quero usar o phplivedocx.
Solução
Não conheço nenhuma biblioteca PHP que faça DOCX => PDF.Na verdade, a conversão de DOCX para outra coisa em PHP é um problema aberto hoje.Isso independe de como você fez o DOCX.
Mas como você disse, são bibliotecas PHP para HTML => PDF.
HTML2Pdf é uma biblioteca PHP de boa reputação que faz HTML => PDF.Há também DomPdf.
Portanto, se você encontrar uma biblioteca PHP para DOCX => HTML, ela funcionará.
Claro que tem algumas limitações porque mesmo que tanto o PDF quanto o DOCX sejam abertos, eles possuem características muito específicas, precisam de um grande processo de renderização e os editores guardam algumas boas dicas para eles.
Converter DOCX em HTML é teoricamente possível.Existe um software Windows que faz isso EpingSoft.Se você precisar fazer isso em PHP, alguns artigos da web explicam como fazer isso, mas como não encontrei nenhum código PHP fazendo isso, acho que é mais teórico do que prático.
http://www.quepublishing.com/articles/article.aspx?p=691502
Quão complicado esse processo seria depende de quanto da formatação nativa do Word você precisa preservar durante a conversão.
Se você quiser tentar desta forma, é bom saber que o OpenTBS permite ler o XML antes e depois da fusão.É baseado em uma classe PHP chamada TbsZip que pode ler qualquer arquivo XML no DOCX, já que na verdade é um arquivo zip.
Outras dicas
Coloquei com sucesso uma versão portátil do libreoffice no servidor web do meu host, que chamo com PHP para fazer uma conversão de linha de comando de .docx, etc.para pdf.no vôo.Não tenho direitos de administrador no servidor web do meu host.Aqui está minha postagem no blog sobre o que eu fiz:
Yay!Converta diretamente de .docx ou .odt para .pdf usando PHP com o LibreOffice (sucessor do OpenOffice)!
Também é possível usar arquivos PDF diretamente no TBS após a descompactação:
qpdf --qdf --object-streams=disable in.pdf out.pdf