我試圖加載二進制數據作爲圖像轉換成使用PHP供以後使用XSLT使用Word文檔(Opem XML)來更新字/ RELS/document.xml.rels。無法使用PHP ZipArchive
打開Word文檔作爲一個PHP ZipArchive後,我能圖像加載到字/媒體文件夾,成功地與同時更新字/ document.xml中文件。但我無法更新在字/ RELS/document.xml.rels的<Relationships/>
文件。
我已經交叉檢查的XML是正確的格式。
以下是代碼片段,我嘗試使用,
$zipArchive=new ZipArchive();
$zipArchive->open($pathToDoc);
$imagePre="image";
$relIdPre="rId";
$index=100;
$nodeList = $reportDOM->getElementsByTagName("Node");
$i=0;
foreach($nodeList as $node) {
$divList = $node->getElementsByTagName("*");
foreach ($divList as $divNode) {
if (strncasecmp($divNode->nodeName, "wizChart", 8) == 0) {
$imgData=$divNode->getAttribute("src");
$imgData=base64_decode(substr($imgData,22));
$zipArchive->
addFromString("word/media/".$imagePre."".$index.".png",$imgData);
$fp=$zipArchive->getStream("word/_rels/document.xml.rels");
$contents='';
while (!feof($fp)) {
$contents .= fread($fp, 2);
}
$serviceOutput=new DOMDocument();
$serviceOutput->loadXML($contents);
$serviceList=$serviceOutput->getElementsByTagName("Relationships");
$element=$serviceOutput->createElement("Relationship");
$element->setAttribute("Id",$relIdPre."".$index);
$element->setAttribute("Type","http://schemas.openxmlformats.org/officeDocument/2006/relationships/image");
$element->setAttribute("Target","word/media/".$imagePre."".$index.".png");
foreach ($serviceList as $serviceNode) {
$serviceNode->appendChild($element);
}
$zipArchive->addEmptyDir("word/_rels/");
$zipArchive->addFromString("word/_rels/document.xml.rels", $serviceOutput->saveXML());
$index++;
}
}
}
$zipArchive->close();
可能有人建議我可能是做錯了什麼?
你不是在說什麼發生(或沒有發生)。該文件是否保持不變? – 2010-06-24 08:03:48
如果我註釋掉試圖將xml節點添加到docmuents.xml.rels文件的部分,圖像將保存到word文檔中。但是,如果我嘗試將這些關係添加到.rels文件,即使圖像也不會保存。 我正在使用下面的鏈接中提到的PHP代碼, http://msdn.microsoft.com/en-us/library/ee840137(office.12).aspx 並試圖圖像添加到$ outputDocument,然後將$ newContent應用到word/document.xml – 2010-06-24 11:26:32