0

http://www.tinybutstrong.com/plugins/opentbs/demo/demo.htmlを使用していますが、うまく動作しません。私の .docx には実際の単語の差し込み印刷フィールドがあります。ドキュメントを理解しようとしてきましたが、そこから得られるのは、PHP デモ コードが $your_name を宣言しているように見え、.docx の onshow.your_name を魔法のように置き換えていることだけです。

最初の例では、$data の配列で MergeBlock を使用したと思いました。これまでの私のコードは次のとおりです。

  $TBS = new clsTinyButStrong;
  $TBS->Plugin(TBS_INSTALL, OPENTBS_PLUGIN);

  $template = $_SERVER['DOCUMENT_ROOT'] . '/inc/dd.docx';
  $data = array();
  $data[] = array('ContactName'=>$this->title . ' ' . $this->firstname . ' ' . $this->surname,
                  'Address1'=>$this->address1,
                  'Address2'=>$this->address2,
                  'Address3'=>$this->town,
                  'Address4'=>$this->county,
                  'PostalCode'=>$this->postcode,
                  'Bacsref'=>$this->bb_number,
                  'Account_Name'=>$this->ac_name,
                  'SortCode'=>$this->CorrectedSortCode,
                  'Account_Number'=>$this->CorrectedAccountNumber);
  $ContactName = $this->title . ' ' . $this->firstname . ' ' . $this->surname;
  $TBS->LoadTemplate($template);
  $TBS->MergeBlock('a,b', $data);                
  $file_name = $this->bb_number . ' Direct Debit';
  //$TBS->Plugin(OPENTBS_DEBUG_XML_CURRENT);
  $TBS->Show(OPENTBS_DOWNLOAD, $file_name . '.docx');

ダウンロードしたファイルでは、差し込み印刷フィールドが置き換えられていません。デモからは、本当の単語の差し込み印刷フィールドのようには見えない onshow.your_name がどのように置き換えられているか推測できません。私が見るのは、$your_name を判別するためのエラー チェック コードだけです...

4

1 に答える 1

3

OpenTBS は、 TinyButStrongテンプレート エンジン (TBS とも呼ばれます)のプラグインです。TBS は text/html/xml コンテンツをマージしますが、OpenTBS+TBS は Docx、Xlsx、Pptx、Odt、Ods などをマージします。

これが、必要なテンプレート構文が実際に TinyButStrong マニュアルにある理由です。

例えば:

$your_name[onload.your_name]all[onload.*]は、 を呼び出したときにマージされる自動フィールドであり$TBS->Show()、対応する PHP グローバル変数とマージされるため、 は docx でタグ付きでマージされます。

PHP で という名前のグローバル変数を定義していない場合$your_name、TBS はマージできないため、エラーが発生し[onload.your_name]ます。

MergeBlock() について:

同じデータ/ファイル対応があります。つまり、コーディング$TBS->MergeBlock('a,b', $data);すると、TBS は 'a' と 'b' という名前の 2 つのブロックを検索し、それらのフィールドを$data. [a.ContactName]の構造により、 、[a.Address1]、 ...を使用できます$data。しかし、$data の構造が同じではないため、パッケージで指定された Docx テンプレートのフィールドは有効ではなくなりました。

TBS オンラインの例を見ることができます。多くのフィールドとブロック構文の例があります。

于 2012-04-02T00:30:21.890 に答える