2012-11-13 2 views
0

J'essaie d'ajouter une image côté serveur téléchargée à partir d'un formulaire utilisateur à un document Word généré avec LiveDocx.Champ de fusion pour l'image ne s'affichant pas dans Word 2007 en utilisant livedocx et php

Mon modèle de mot ressemble à ceci.

«image:photo» 

Alias ​​

{ MERGEFIELD image:photo \* MERGEFORMAT } 

Mon php ressemble à ceci.

$mailMerge = new Zend_Service_LiveDocx_MailMerge(); 
$mailMerge->uploadImage($this->logo_path); 
$mailMerge->assign('image:photo', $this->logo_path); 

Je viens d'obtenir une zone vide où l'image devrait être. Mes autres champs de fusion fonctionnent correctement.

Répondre

2

Je ne savais pas que les magasins LiveDocx seul le nom du fichier à référencer. J'ai trouvé à l'aide:

$mailMerge->listImages(); 

Le format est revenu comme ceci:

array 
0 => array 
    'filename' => string 'directory_logo.png' (length=18) 
    'fileSize' => int 12829 
    'createTime' => int 1352835686 
    'modifyTime' => int 1352835686 

Ainsi, le fichier modèle était très bien avec ce format:

«image:photo» 

Alias ​​

{ MERGEFIELD image:photo \* MERGEFORMAT } 

Mais mon php avait besoin de ressembler ceci:

$mailMerge->uploadImage($this->logo_path); 
$mailMerge->assign('image:photo', $this->logo_file); 

Mon code complet de travail ressemble à ceci:

$mailMerge = new Zend_Service_LiveDocx_MailMerge(); 
$mailMerge->setUsername($username) 
    ->setPassword($password); 
$mailMerge->setLocalTemplate($template_path . '/service_template.docx'); 
$mailMerge->uploadImage($this->logo_path); 
$mailMerge->assign('image:photo', 'directory_logo.png'); 
$mailMerge->createDocument(); 
$document = $mailMerge->retrieveDocument('docx'); 
file_put_contents($this->config->livedocx->document . '/' . $this->prefs['serverid'] . '/service_directory.docx', $document); 
$mailMerge->deleteImage('directory_logo.png'); 
Questions connexes