PhpWordでcloneBlockが効かない

PhpWordのTemplate機能でcloneBlock()という、便利なメソッドが追加されていますが、イマイチ動かない。。。
xmlから{$CLONEME} ・・・・・ {$/CLONEME} のような指定ブロック部分を正規表現で抜き出して、繰り返させて再構成しているんですが、{$/CLONEME} の部分が複数タグに分割されてうまくヒットしないようです。実験的に無理やりヒットするように正規表現を曖昧にして動かしてみましたが、ワードファイルが壊れています、、、というようなメッセージが表示されてうまくいきません。テンプレートとするワードファイルの作り方で解決できるのかもしれませんが。。。
OfficeOpenXMLの仕様をきちんと把握して修正したり、対応要素を確認したりしないと危険で使えないですね。

cloneBlockが動けばsetValueのlimit=1でテンプレート変数にセットしていき、複数ページの単票形式の帳票に対応できると思ったんですが、、、今回は断念です。

慣れもあるかもしれませんが、PhpWordでの見た目調整はHTMLより 面倒なんでTemplate機能ががっつり使えるようになってほしいところです。

 

カテゴリー: php

PhpWordでborderInsideVSizeが効かない不具合の修正

phpでワードファイルを出力する「PhpWord」ですが、開発が止まっていると思っていたらGitHubのほうで開発が進んでいるようです。

セクション要素を追加しても改ページしないでテーブルの外枠余白を設定できたり、テーブルの縦横結合に対応していたりと便利になっていますが、TableStyleに設定したborderInsideVSizeが効かないというバグがありました。
下記で修正されます。
(こんな普通のバグがあるんですね。。。 )MarginBorder.php

(参考)https://github.com/PHPOffice/PHPWord/commit/5c8e100d4113641e93e1f150c0c84c2e15aeb3c6

日本語の情報が少ないので英語サイトメインで見ないといけません。。。

 

カテゴリー: php