0

PHP を使用して、データベースから docx ドキュメントを生成しています。生成されたドキュメントには、ラベルが添付された縦棒グラフが含まれています (つまり、テキスト ボックスを含むユーザー シェイプ)。テキストボックスにすべてのテキストを収容して表示するために (つまり、ユーザーがすべてのテキストを表示するためにテキストボックスのサイズを変更する必要はありません)、私のコードは 3cm に収まる文字数を計算し、改行を追加します。必要に応じて文字列を入力し、必要なテキスト行数を教えてくれます。私は持っている:

<a:xfrm xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
      <a:off x="1638276" y="1676399"/>
      <a:ext cx="1257325" cy="'.(252000 * $labelLeftLines).'"/>
 </a:xfrm>

これにより、幅約 3.5cm (内部パディング用に 0.5 を追加) のテキスト ボックスと、高さ 0.7cm に $labelLeftLines の値を掛けた値が得られるはずです。ただし、テキスト ボックスは常に幅 3.cm、高さ 0.86cm で表示され、1 行のテキストしか表示されません。「autofit」を追加すると:

<a:bodyPr xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" vertOverflow="clip" wrap="square" rtlCol="0">
     <a:spAutoFit/>
</a:bodyPr>

生成されたファイルはまったく同じように見えますが、テキストボックスを右クリックしてプロパティを調べると、「自動調整」が実際に適用されます。テキストボックスに影響を与えるには、チェックを外して再度チェックする必要があります。そこにopenXMLの達人はいますか?

4

1 に答える 1

0

うーん、いくつかのランダムなもがきは、私が操作する必要がある値がここにあることを明らかにしました:

<cdr:relSizeAnchor xmlns:cdr="http://schemas.openxmlformats.org/drawingml/2006/chartDrawing"> 
   <cdr:from>
     <cdr:x>0.47</cdr:x>
     <cdr:y>0.75</cdr:y>
   </cdr:from>
   <cdr:to>
     <cdr:x>0.67</cdr:x>
     <cdr:y>1</cdr:y>
   </cdr:to>

これらの値を変更すると、実際には texbox のサイズが変更されますが、どの単位が使用されているかはわかりません。0.75 から 1 の場合、高さは 1.43cm になります。いつの日か、ドキュメントを回避できるようになるかもしれません。

于 2013-08-24T21:49:50.017 に答える