zend で編集したファイルを保存しようとしています。実際、これは .docx ドキュメントの一部である document.xml です。私はdocxファイルを取り、document.xmlを抽出し、コンテンツにいくつかの変更を加え、ポップアップダイアログボックスを表示して新しいファイルを保存したり、開いたりしたいと考えています。
結果はほぼ問題ありませんが、zip パックの代わりに、zip 拡張子の付いたテキスト ファイルを受け取ります。コンテンツでは、実際には zip ファイルを見つけることができますが、ビュー/レイアウト コンテンツ内にあります。
私のコードは以下のようなものです:
$zip = New ZipArchive();
$newReportFilename = "Report_" . date('Y-m-d_H-i-s') . ".docx";
$dir = getcwd();
$templateLocation = "$dir\\report_template.docx";
$tempFile = "$dir\\$newReportFilename";
copy($templateLocation,$tempFile);
$zip->open($tempFile);
$fp = $zip->getStream("word/document.xml");
while (!feof($fp)) {
$fileContent .= fread($fp, 2);
}
fclose($fp);
$fileContent = "... some xml content ...";
$zip->addFromString("word/document.xml", $fileContent);
$zip->close()
header("Content-Type: application/zip");
header("Content-Length: " . filesize("$dir\\$newReportFilename"));
header("Content-Disposition: attachment; filename=\"Reportfile.zip\"");
readfile("$dir\\$newReportFilename");
そして、私は出力ファイルで受け取るこのようなもの:
...
<form id="createReport" name="createReport" enctype="application/x-www-form-urlencoded" method="post" action=""><dl class="zend_form">
<dt id="runId-label"><label for="runId" class="optional">Run ID</label></dt>
<dd id="runId-element">
<input type="text" name="runId" id="runId" value="81"></dd>
<dt id="submit-label"> </dt><dd id="submit-element">
<input type="submit" name="submit" id="submit" value="Dalej"></dd></dl></form>okPK¶ ! 8+-?¦ s [Content_Types].xml ó( ¦V-n¦0+F?+¥éó¦£C¦$@¦¤á+ò-û/Éd-¦v,¡X(YGF"@vf+3+-=~oM±1injvS-XNzѦªf++-»¼H(£¦;¿++_}¦¦\ñé¬]¬+1|p<+-Xæ*+-¢+G+Énpå! ë=¦+GÄKnûÿ1+j·HóVP<ëê¤-¤±Q±+{t!U¦èn]]ª«Ö-h)Éä=gº+HK¯¦Zé=rgë¬-p!z )--¼¬zF/Ü»û?á§;â+-=id+-hw§¬7=+në=⦣ßk¢¢öƒ¤+¦V8-nf+&éIgE+¥Y§Uv¢¦:ñæ>ì¢=+¯ï&˜ì+++p+fN/Op;¦@ñt||+zFI¤fÄ+w+ô(a+L=vBô@~=Eº|^mS9VáJv 5(+üê¶Ç+-
y8°²-âxs)±-I~
...
テキストファイルを使用したいくつかの実験では、同じ結果しか得られませんでした。つまり、取得したファイル内に、私が指定したテキストを含むビュー/レイアウトコンテンツが表示されます。
ファイルをディスクに保存するだけで、編集と圧縮全体が正常に機能しますが、ユーザーがダイアログボックスとして保存して、これをどうするかを決定したいと思います。
このビュー/レイアウト コンテンツを削除する方法を知っていますか?
そして、ファイルのみを取得します。