テキストラン中にテキストブレークを追加したり、次の行/行に移動したりするにはどうすればよいですか? テキストの実行中に実行しようとし$section->addTextBreak(2);
ましたが、テキストの実行後にセクションに区切りが追加されました。私も試し$textrun->addTextBreak(2);
ましたが、致命的なエラーが発生しました。どんな回答でも大歓迎です。
9 に答える
残念ながら、これは現在のバージョンでは不可能です。私はこのライブラリを深く理解していませんが、コードを見て、textRun
クラスがaddText
andaddLink
メソッドだけで構成されていることがわかりました。
しかし、この機能も他のいくつかの機能と一緒に必要なので、自分で書き、プル リクエストを作成して、次のリリース (もしあれば) に含めるようにします。
基本的には、textRun
クラスを変更し、メソッドを追加してaddLineBreak
(セクション クラスと同様の方法で)、クラスを変更Base.php
して最終ドキュメントに適切な要素を作成することで実行できます。
Docx xml では、これらの改行は htmlbr
タグに似ていますが、次のように改行を使用した後、前のテキストを閉じて再度開く必要があります。
<w:r>
<w:t>This is</w:t>
<w:br/>
<w:t xml:space="preserve"> a simple sentence.</w:t>
</w:r>
単純に行うのではなく
<w:r>
<w:t>This is<w:br /> a simple sentence</w:t>
</w:r>
したがって、base.php
では、動作を編集してこのコード ブロックを作成する必要があります。
これが役に立ったことを願っています!
編集
これを実装するのは非常に簡単であることがわかりました。このtextRun.php
メソッドを追加するだけです:
/**
* Add a TextBreak Element
*
* @param int $count
*/
public function addTextBreak($count = 1) {
for($i=1; $i<=$count; $i++) {
$this->_elementCollection[] = new PHPWord_Section_TextBreak();
}
}
このメソッドの最後のメソッドで、次の条件を追加しBase.php
ます。_writeTextRun
elseif($element instanceof PHPWord_Section_TextBreak) {
$objWriter->writeElement('w:br');
}
phpword に改行を追加するのが面倒で、たまたま解決策を見つけたので、ここにあります。
$PHPWord->addParagraphStyle('pJustify', array('align' => 'both', 'spaceBefore' => 0, 'spaceAfter' => 0, 'spacing' => 0));
//add this style then append it to text below
$section->addText('something', 'textstyle', 'pJustify');
//the text behind this will be justified and will be in a new line, not in a new paragraph
$section->addText('behind', 'textstyle', 'pJustify');
これは出力されます:
なにか
後ろに