openTBS で生成されたドキュメントでリンクを機能させようとしています。これまでのところ運がありません:(
- 私にできること: ちょっとしたハックで、リンク付きのテンプレートを作成し、変数によってリンクのキャプションと href を変更できます。
- 私ができないこと:リンクを含むブロックを作成し、MergeBlockで埋めて、オブジェクトのphp配列で機能させます。
私は完全に迷っており、その方法を理解するために数日を費やしました。これはopenTBSが問題なく独自に処理できるように思われるため、私は非常に悩まされています。
私はこれが私のphpコードです:
<?
include_once('tbs/tbs_class.php');
include_once('tbs/plugins/tbs_plugin_opentbs_1.8.1/tbs_plugin_opentbs.php');
$TBS = new clsTinyButStrong('!-,-!');
//the special pattern is needed because
//word replaces [] brackets when put in link's href.
$TBS -> Plugin(TBS_INSTALL, OPENTBS_PLUGIN);
//some variables for mergeing with the template
$tmpl_headname='Sarah';
$tmpl_headlink='http://example.com/?user=sarah';
$tmpl_items = array(
array('title'=>'My title', 'url'=>'http://myurl.com/firstarticle'),
array('title'=>'My second title', 'url'=>'http://myurl.com/secondarticle'),
array('title'=>'My third title', 'url'=>'http://myurl.com/thirdarticle')
);
$TBS->LoadTemplate('sampledoc.docx');
$TBS->MergeBlock('item',$tmpl_items);
$TBS->Show(OPENTBS_DOWNLOAD, 'sample_filename_doc');
?>
私の Word テンプレート:
This is your unique link, !-onload.tmpl_headname-! (points to: !- onload.tmpl_headlink-!)
!-item;block=begin;tbs:page-!
!-item.title-!
Link to the website (points to: !-item.url-!)
***
!-item;block=end;tbs:page-!
私の Word テンプレートでは、リンクは を指して!-item.url-!
おり、openTBS を実行した後も同じままです。問題は、Docx zip アーカイブではword/_rels/document.xml.rels˙
、変更されていないように見えることです。
<Relationship TargetMode="External" Target="!-item.url-!" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" Id="rId8"/>
どんな助けでも大歓迎です!:)
また、リンクの URL を openTBS で変更したい (マージブロック モードではない) 人のために、回避策を見つけました: document.xml.rels をテンプレートとして開き、openTBS を実行します。
$TBS->LoadTemplate('tbs/sampledoc.docx#word/_rels/document.xml.rels');
!-item.url-! のため、このハックはマージブロックでは機能しません。はすべてのリソースのターゲットになり、どのブロックの反復に対してどれがどれであるかはわかりません:(
編集:
OpenTBS は、 、 などのrId
プレフィックスを持つ ID を生成します。リソース ファイル内の他のすべての項目は、パターンでリンクされています。openTBS を実行した後、次の Word セクションを表すこの xml コードを document.xml に取得します。rId1
rId2
rId[x]
***
My second title
Link to the website
「ウェブサイトへのリンク」ビットにリンクがあります。...
<w:p w:rsidRDefault="00886D12" w:rsidP="00886D12">
<w:r>
<w:t xml:space="preserve">
***
</w:t>
</w:r>
<w:r>
<w:br/>
</w:r>
<w:r>
<w:t>
My second title
</w:t>
</w:r>
<w:r>
<w:br/>
</w:r>
<w:hyperlink r:id="rId7" w:history="1">
<w:r>
<w:rPr>
<w:rStyle w:val="Hyperlink"/>
</w:rPr>
<w:t xml:space="preserve">
Link to the website
</w:t>
</w:r>
</w:hyperlink>
</w:p>
...
document.xml.rels ファイルは次のようになります。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="rId8" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable" Target="fontTable.xml"/>
<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings" Target="settings.xml"/>
<Relationship Id="rId7" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" Target="!-item.url-!" TargetMode="External"/>
<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/>
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml" Target="../customXml/item1.xml"/>
<Relationship Id="rId6" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/endnotes" Target="endnotes.xml"/>
<Relationship Id="rId5" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes" Target="footnotes.xml"/>
<Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings" Target="webSettings.xml"/>
<Relationship Id="rId9" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="theme/theme1.xml"/>
</Relationships>
Target 属性内に置かれた特別な openTBS コードを使用して、ハイパーリンク リソース アイテムを複製できるかもしれませんが、その場合は、document.xml でも新しい rID を使用する必要があります。
ご協力いただきありがとうございます!