Zend_Service_LiveDocx.xml 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 20192 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.service.livedocx">
  5. <title>Zend_Service_LiveDocx</title>
  6. <sect2 id="zend.service.livedocx.introduction">
  7. <title>Einführung in LiveDocx</title>
  8. <para>
  9. LiveDocx ist ein <acronym>SOAP</acronym> Service der es Entwicklern erlaubt Word
  10. Dokumente zu erstellen indem strukturierte Daten von PHP mit einem Template kombiniert
  11. werden, die in einer Word Bearbeitung erstellt wurden. Das resultierende Dokument kann
  12. als <acronym>PDF</acronym>, <acronym>DOCX</acronym>, <acronym>DOC</acronym>,
  13. <acronym>HTML</acronym> oder <acronym>RTF</acronym> Datei gespeichert werden. LiveDocx
  14. implementiert <ulink url="http://en.wikipedia.org/wiki/Mail_merge">mail-merge</ulink>
  15. in PHP.
  16. </para>
  17. <para>
  18. Die Familie der <classname>Zend_Service_LiveDocx</classname> Komponenten bietet ein
  19. klares und einfaches Interface zur <ulink url="http://www.livedocx.com">LiveDocx
  20. API</ulink> und bietet zusätzlich Funktionalitäten um die Geschwindigkeit im
  21. Netzwerk zu erhöhen.
  22. </para>
  23. <para>
  24. Wenn man, zusätzlich zu diesem Kapitel des Handbuchs, daran interessiert ist mehr
  25. über <classname>Zend_Service_LiveDocx</classname> und das dahinterliegende
  26. <acronym>SOAP</acronym> Service LiveDocx zu lernen, kann man bei den folgenden
  27. Ressourcen nachsehen:
  28. </para>
  29. <itemizedlist>
  30. <listitem>
  31. <para>
  32. <emphasis>Mitgelieferte Beispielanwendungen</emphasis>. Es gibt eine große
  33. Anzahl an Beispielanwendungen im Verzeichnis
  34. <emphasis>/demos/Zend/Service/LiveDocx</emphasis> der Zend Framework
  35. Distributiondatei, oder der Trunk Version die vom standardmäßigen SVN
  36. repository ausgecheckt werden kann. Diese sind dazu gedacht schnell, in nur
  37. ein paar Minuten, mit <classname>Zend_Service_LiveDocx</classname> zurecht zu
  38. kommen.
  39. </para>
  40. </listitem>
  41. <listitem>
  42. <para>
  43. <ulink url="http://www.phplivedocx.org/">
  44. <classname>Zend_Service_LiveDocx</classname> Blog und Webseite</ulink>.
  45. </para>
  46. </listitem>
  47. <listitem>
  48. <para>
  49. <ulink url="http://www.livedocx.com/pub/documentation/api.aspx">
  50. LiveDocx SOAP API Dokumentation</ulink>.
  51. </para>
  52. </listitem>
  53. <listitem>
  54. <para>
  55. <ulink url="https://api.livedocx.com/1.2/mailmerge.asmx?wsdl">
  56. LiveDocx WSDL</ulink>.
  57. </para>
  58. </listitem>
  59. <listitem>
  60. <para>
  61. <ulink url="https://www.livedocx.com/">LiveDocx Blog und Webseite</ulink>.
  62. </para>
  63. </listitem>
  64. </itemizedlist>
  65. <sect3 id="zend.service.livedocx.account">
  66. <title>Für einen Account anmelden</title>
  67. <para>
  68. Bevor man damit beginnt LiveDocx zu verwenden muss man sich zuerst für einen Account
  69. <ulink
  70. url="https://www.livedocx.com/user/account_registration.aspx">anmelden</ulink>.
  71. Der Account ist komplett kostenlos, und mann muss nur einen
  72. <emphasis>Benutzernamen</emphasis>, ein <emphasis>Passwort</emphasis> und eine
  73. <emphasis>E-Mail Adresse</emphasis> spezifizieren. Die Anmeldedaten werden mit der
  74. Email Adresse verknüpft, welche man angibt, deshalb sollte man vorsichtig tippen.
  75. </para>
  76. </sect3>
  77. <sect3 id="zend.service.livedocx.templates-documents">
  78. <title>Templates und Dokumente</title>
  79. <para>
  80. LiveDocx unterscheidet zwischen den folgenden Ausdrücken: 1)
  81. <emphasis>Template</emphasis> und 2) <emphasis>Dokument</emphasis>. Um die
  82. Dokumentation und auch die aktuelle API vollständig zu verstehen, ist es wichtig
  83. das jeder Programmierer der LiveDocx ausliefert, den Unterschied versteht.
  84. </para>
  85. <para>
  86. Der Ausdruck <emphasis>Template</emphasis> wird verwendet um auf eine Eingabedatei
  87. zu verweisen, die in einem Word Prozessor erstellt wurde, und Formatierungen sowie
  88. Textfelder enthält. Man kann ein <ulink
  89. url="http://www.phplivedocx.org/wp-content/uploads/2009/01/license-agreement-template.docx">Beispieltemplate</ulink>
  90. downloaden, welches als <acronym>DOCX</acronym> Datei gespeichert ist. Der Ausdruck
  91. <emphasis>Dokument</emphasis> wird verwendet um auf eine Ausgabedatei zu verweisen
  92. welche die Templatedatei enthält, zusammen mit Daten - z.B. das fertiggestellte
  93. Dokument. Man kann ein <ulink
  94. url="http://www.phplivedocx.org/wp-content/uploads/2009/01/license-agreement-document.pdf">Beispieldokument</ulink>
  95. downloaden, welches als <acronym>PDF</acronym> Datei gespeichert ist.
  96. </para>
  97. </sect3>
  98. <sect3 id="zend.service.livedocx.formats">
  99. <title>Unterstützte Dateiformate</title>
  100. <para>
  101. LiveDocx unterstützt die folgenden Dateiformate:
  102. </para>
  103. <sect4 id="zend.service.livedocx.formats.template">
  104. <title>Template Dateiformate (Eingabe)</title>
  105. <para>
  106. Templates können in jedem der folgenden Dateiformate gespeichert werden:
  107. </para>
  108. <itemizedlist>
  109. <listitem>
  110. <para>
  111. <ulink url="http://en.wikipedia.org/wiki/Office_Open_XML">DOCX</ulink> -
  112. Office Open <acronym>XML</acronym> Format
  113. </para>
  114. </listitem>
  115. <listitem>
  116. <para>
  117. <ulink url="http://en.wikipedia.org/wiki/DOC_(computing)">DOC</ulink> -
  118. Microsoft Word <acronym>DOC</acronym> Format
  119. </para>
  120. </listitem>
  121. <listitem>
  122. <para>
  123. <ulink url="http://en.wikipedia.org/wiki/Rich_Text_Format">RTF</ulink> -
  124. Rich Text Dateiformat
  125. </para>
  126. </listitem>
  127. <listitem>
  128. <para>
  129. <ulink url="http://www.textcontrol.com/">TXD</ulink> - TX Text Control
  130. Format
  131. </para>
  132. </listitem>
  133. </itemizedlist>
  134. </sect4>
  135. <sect4 id="zend.service.livedocx.formats.document">
  136. <title>Dokument Dateiformate (Ausgabe):</title>
  137. <para>
  138. Das resultierende Dokument kann in jedem der folgenden Dateiformate gespeichert
  139. werden:
  140. </para>
  141. <itemizedlist>
  142. <listitem>
  143. <para>
  144. <ulink url="http://en.wikipedia.org/wiki/Office_Open_XML">DOCX</ulink> -
  145. Office Open <acronym>XML</acronym> Format
  146. </para>
  147. </listitem>
  148. <listitem>
  149. <para>
  150. <ulink url="http://en.wikipedia.org/wiki/DOC_(computing)">DOC</ulink> -
  151. Microsoft Word <acronym>DOC</acronym> Format
  152. </para>
  153. </listitem>
  154. <listitem>
  155. <para>
  156. <ulink url="http://en.wikipedia.org/wiki/Xhtml">HTML</ulink> -
  157. <acronym>XHTML</acronym> 1.0 Transitional Format
  158. </para>
  159. </listitem>
  160. <listitem>
  161. <para>
  162. <ulink url="http://en.wikipedia.org/wiki/Rich_Text_Format">RTF</ulink> -
  163. Rich Text File Format
  164. </para>
  165. </listitem>
  166. <listitem>
  167. <para>
  168. <ulink
  169. url="http://en.wikipedia.org/wiki/Portable_Document_Format">PDF</ulink>
  170. - Acrobat Portable Document Format
  171. </para>
  172. </listitem>
  173. <listitem>
  174. <para>
  175. <ulink url="http://www.textcontrol.com/">TXD</ulink> - TX Text Control
  176. Format
  177. </para>
  178. </listitem>
  179. <listitem>
  180. <para>
  181. <ulink url="http://en.wikipedia.org/wiki/Text_file">TXT</ulink> -
  182. <acronym>ANSI</acronym> reiner Text
  183. </para>
  184. </listitem>
  185. </itemizedlist>
  186. </sect4>
  187. <sect4 id="zend.service.livedocx.formats.image">
  188. <title>Bild Dateiformate (Ausgabe):</title>
  189. <para>
  190. Das resultierende Dokument kann in jedem der folgenden grafischen Dateiformate
  191. gespeichert werden:
  192. </para>
  193. <itemizedlist>
  194. <listitem>
  195. <para>
  196. <ulink url="http://en.wikipedia.org/wiki/BMP_file_format">BMP</ulink> -
  197. Bitmap Image Format
  198. </para>
  199. </listitem>
  200. <listitem>
  201. <para>
  202. <ulink url="http://en.wikipedia.org/wiki/GIF">GIF</ulink> - Graphics
  203. Interchange Format
  204. </para>
  205. </listitem>
  206. <listitem>
  207. <para>
  208. <ulink url="http://en.wikipedia.org/wiki/Jpg">JPG</ulink> - Joint
  209. Photographic Experts Group Format
  210. </para>
  211. </listitem>
  212. <listitem>
  213. <para>
  214. <ulink
  215. url="http://en.wikipedia.org/wiki/Portable_Network_Graphics">PNG</ulink>
  216. - Portable Network Graphics Format
  217. </para>
  218. </listitem>
  219. <listitem>
  220. <para>
  221. <ulink
  222. url="http://en.wikipedia.org/wiki/Tagged_Image_File_Format">TIFF</ulink>
  223. - Tagged Image File Format
  224. </para>
  225. </listitem>
  226. <listitem>
  227. <para>
  228. <ulink url="http://en.wikipedia.org/wiki/Windows_Metafile">WMF</ulink> -
  229. Windows Meta File Format
  230. </para>
  231. </listitem>
  232. </itemizedlist>
  233. </sect4>
  234. </sect3>
  235. </sect2>
  236. <sect2 id="zend.service.livedocx.mailmerge">
  237. <title>Zend_Service_LiveDocx_MailMerge</title>
  238. <para>
  239. <classname>Zend_Service_LiveDocx_MailMerge</classname> ist das mail-merge Objekt in der
  240. <classname>Zend_Service_LiveDocx</classname> Familie.
  241. </para>
  242. <sect3 id="zend.service.livedocx.mailmerge.generation">
  243. <title>Prozess der Dokumentenerstellung</title>
  244. <para>
  245. Der Prozess der Erstellung des Dokuments kann mit der folgenden Gleichung
  246. vereinfacht dargestellt werden:
  247. </para>
  248. <para>
  249. <emphasis>Template + Daten = Dokument</emphasis>
  250. </para>
  251. <para>
  252. Oder durch das folgende Diagramm ausgedrückt werden:
  253. </para>
  254. <para>
  255. <inlinegraphic
  256. fileref="figures/zend.service.livedocx.mailmerge.generation-diabasic.png"
  257. format="PNG" />
  258. </para>
  259. <para>
  260. Daten werden in ein Template eingefügt um ein Dokument zu erstellen (<ulink
  261. url="figures/zend.service.livedocx.mailmerge.generation-diabasic_zoom.png">größer
  262. darstellen</ulink>).
  263. </para>
  264. <para>
  265. Ein Template das in einer Word Bearbeitungsanwendung, wie Microsoft Word, erstellt
  266. wird, wurd in LiveDocx geladen. Daten werden kann in das Template eingesetzt, und
  267. das resultierende Dokument wird in jedes der unterstützten Formate gespeichert.
  268. </para>
  269. </sect3>
  270. <sect3 id="zend.service.livedocx.mailmerge.templates">
  271. <title>Erstellen von Templates in Microsoft Word 2007</title>
  272. <para>
  273. Man muss damit beginnen Microsoft Word zu starten und ein neues Dokument zu
  274. erstellen. Als nächstes, wird der Dialog <emphasis>Felder</emphasis> geöffnet.
  275. Er sieht wie folgt aus:
  276. </para>
  277. <para>
  278. <inlinegraphic
  279. fileref="figures/zend.service.livedocx.mailmerge.templates-msworddialog.png"
  280. format="PNG" />
  281. </para>
  282. <para>
  283. Dialogbox Felder in Microsoft Word 2007 (<ulink
  284. url="figures/zend.service.livedocx.mailmerge.templates-msworddialog_zoom.png">größer
  285. darstellen</ulink>).
  286. </para>
  287. <para>
  288. Durch Verwendung dieses Dialogs kann man die benötigten Merge-Felder in das eigene
  289. Dokument einfügen. Anbei ist ein Screenshot der Lizenz Vereinbarung in Microsoft
  290. Word 2007. Die Merge Felder sind als <code>{ MERGEFIELD FieldName }</code> markiert:
  291. </para>
  292. <para>
  293. <inlinegraphic
  294. fileref="figures/zend.service.livedocx.mailmerge.templates-mswordtemplatefull.png"
  295. format="PNG" />
  296. </para>
  297. <para>
  298. Das Template in Microsoft Word 2007 (<ulink
  299. url="figures/zend.service.livedocx.mailmerge.templates-mswordtemplatefull_zoom.png">größer
  300. darstellen</ulink>).
  301. </para>
  302. <para>
  303. Jetzt muss das Template als <emphasis>template.docx</emphasis> gespeichert werden.
  304. </para>
  305. <para>
  306. Im nächsten Schritt veröffentlichen wir die Merge-Felder mit textuellen Daten von
  307. PHP.
  308. </para>
  309. <para>
  310. <inlinegraphic
  311. fileref="figures/zend.service.livedocx.mailmerge.templates-mswordtemplatecropped.png"
  312. format="PNG" />
  313. </para>
  314. <para>
  315. Unterteiltes Template in Microsoft Word 2007 (<ulink
  316. url="figures/zend.service.livedocx.mailmerge.templates-mswordtemplatecropped_zoom.png">größer
  317. darstellen</ulink>).
  318. </para>
  319. <para>
  320. Um die Merge Felder, im vorher unterteilten Screenshot des <ulink
  321. url="http://www.phplivedocx.org/wp-content/uploads/2009/01/license-agreement-template.docx">Templates</ulink>,
  322. in Microsoft Word auszufüllen, muss das folgende geschrieben werden:
  323. </para>
  324. <programlisting language="php"><![CDATA[
  325. $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge();
  326. $phpLiveDocx->setUsername('myUsername')
  327. ->setPassword('myPassword');
  328. $phpLiveDocx->setLocalTemplate('template.docx');
  329. $phpLiveDocx->assign('software', 'Magic Graphical Compression Suite v1.9')
  330. ->assign('licensee', 'Henry Döner-Meyer')
  331. ->assign('company', 'Co-Operation');
  332. $phpLiveDocx->createDocument();
  333. $document = $phpLiveDocx->retrieveDocument('pdf');
  334. file_put_contents('document.pdf', $document);
  335. ]]></programlisting>
  336. <para>
  337. Das resultierende Dokument wird auf die Festplatte in die Datei
  338. <emphasis>document.pdf</emphasis> geschrieben. Diese Datei kann nun weiter
  339. bearbeitet, per Email versendet oder einfach angezeigt werden, wie anbei im
  340. <emphasis>Document Viewer 2.26.1</emphasis> auf <emphasis>Ubuntu 9.04</emphasis>
  341. gezeigt:
  342. </para>
  343. <para>
  344. <inlinegraphic
  345. fileref="figures/zend.service.livedocx.mailmerge.templates-msworddocument.png"
  346. format="PNG" />
  347. </para>
  348. <para>
  349. Resultierendes Dokument als <acronym>PDF</acronym> im Document Viewer 2.26.1
  350. (<ulink
  351. url="figures/zend.service.livedocx.mailmerge.templates-msworddocument_zoom.png">größer
  352. darstellen</ulink>).
  353. </para>
  354. </sect3>
  355. <sect3 id="zend.service.livedocx.mailmerge.advanced">
  356. <title>Gehobeneres Mail-Merge</title>
  357. <para>
  358. <classname>Zend_Service_LiveDocx_MailMerge</classname> erlaubt es Entwicklern eine
  359. beliebige Anzahl an Text Feldern in ein Template einzufügen. Diese textfelder werden
  360. mit Daten gefüllt wenn <emphasis>createDocument()</emphasis> aufgerufen wird.
  361. </para>
  362. <para>
  363. Zusätzlich zu Textfeldern ist es auch mäglich spezielle Regionen eines Dokuments
  364. zu spezifizieren, welche wiederholt werden sollen.
  365. </para>
  366. <para>
  367. In einer Telefonrechnung ist es z.b. notwendig eine Liste aller Verbindungen,
  368. inklusive der Zielnummern, der Dauer und den Kosten jedes Anrufs auszudrucken.
  369. Diese Funktion der wiederholten Zeile kann mit sogenannten Blöcken erzielt werden.
  370. </para>
  371. <para>
  372. <emphasis>Blöcke</emphasis> sind einfach Regionen eines Dokuments, welche wiederholt
  373. werden wenn <methodname>createDocument()</methodname> aufgerufen wird. In einem
  374. Block kann eine beliebige Anzahl an <emphasis>Block Feldern</emphasis> spezifiziert
  375. werden.
  376. </para>
  377. <para>
  378. Blöcke bestehen aus zwei zusammenhängenden Dokument-Zielen mit einem eindeutigen
  379. Namen. Der folgende Screenshot zeigt diese Ziele und deren Namen in Rot:
  380. </para>
  381. <para>
  382. <inlinegraphic
  383. fileref="figures/zend.service.livedocx.mailmerge.advanced-mergefieldblockformat.png"
  384. format="PNG" />
  385. </para>
  386. <para>
  387. (<ulink
  388. url="figures/zend.service.livedocx.mailmerge.advanced-mergefieldblockformat_zoom.png">größer
  389. darstellen</ulink>).
  390. </para>
  391. <para>
  392. Das Format eines Blocks ist wie folgt:
  393. </para>
  394. <programlisting language="text"><![CDATA[
  395. blockStart_ + unique name
  396. blockEnd_ + unique name
  397. ]]></programlisting>
  398. <para>Zum Beispiel:</para>
  399. <programlisting language="text"><![CDATA[
  400. blockStart_block1
  401. blockEnd_block1
  402. ]]></programlisting>
  403. <para>
  404. Der Inhalt eines Blocks wird wiederholt, bis alle zugeordneten Daten in Blockfeldern
  405. des Templates eingefügt wurden. Die Daten der Blockfelder werden in PHP als
  406. mehrfach-assoziatives Array spezifiziert.
  407. </para>
  408. <para>
  409. Der folgende Screenshot eines Templates in Microsoft Word 2007 zeigt wie Blockfelder
  410. verwendet werden:
  411. </para>
  412. <para>
  413. <inlinegraphic
  414. fileref="figures/zend.service.livedocx.mailmerge.advanced-mswordblockstemplate.png"
  415. format="PNG" />
  416. </para>
  417. <para>
  418. Template, welches Blöcke in Microsoft Word 2007 zeigt (<ulink
  419. url="figures/zend.service.livedocx.mailmerge.advanced-mswordblockstemplate_zoom.png">größer
  420. darstellen</ulink>).
  421. </para>
  422. <para>
  423. Der folgende Code füllt das obige Template mit Daten.
  424. </para>
  425. <programlisting language="php"><![CDATA[
  426. $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge();
  427. $phpLiveDocx->setUsername('myUsername')
  428. ->setPassword('myPassword');
  429. $phpLiveDocx->setLocalTemplate('template.doc');
  430. $billConnections = array(
  431. array(
  432. 'connection_number' => '+49 421 335 912',
  433. 'connection_duration' => '00:00:07',
  434. 'fee' => '€ 0.03',
  435. ),
  436. array(
  437. 'connection_number' => '+49 421 335 913',
  438. 'connection_duration' => '00:00:07',
  439. 'fee' => '€ 0.03',
  440. ),
  441. array(
  442. 'connection_number' => '+49 421 335 914',
  443. 'connection_duration' => '00:00:07',
  444. 'fee' => '€ 0.03',
  445. ),
  446. array(
  447. 'connection_number' => '+49 421 335 916',
  448. 'connection_duration' => '00:00:07',
  449. 'fee' => '€ 0.03',
  450. ),
  451. );
  452. $phpLiveDocx->assign('connection', $billConnections);
  453. // ... andere Daten hier anhängen ...
  454. $phpLiveDocx->createDocument();
  455. $document = $phpLiveDocx->retrieveDocument('pdf');
  456. file_put_contents('document.pdf', $document);
  457. ]]></programlisting>
  458. <para>
  459. Die Daten, welche im Array <varname>$billConnections</varname> spezifiziert sind,
  460. werden im Template im Block 'connection' wiederholt. Die Schlüssel des Arrays
  461. (<varname>connection_number</varname>, <varname>connection_duration</varname> und
  462. <varname>fee</varname>) sind die Namen der Blockfelder - deren Daten werden bei
  463. jeder Iteration in einer Zeile eingefügt.
  464. </para>
  465. <para>
  466. Das resultierende Dokument wird auf die Festplatte in die Datei
  467. <emphasis>document.pdf</emphasis> geschrieben. Diese Datei kann anschließend
  468. nachbearbietet, per Email gesendet, oder einfach dargestellt werden, wie anbei im
  469. <emphasis>Document Viewer 2.26.1</emphasis> unter <emphasis>Ubuntu 9.04</emphasis>
  470. gezeigt:
  471. </para>
  472. <para>
  473. <inlinegraphic
  474. fileref="figures/zend.service.livedocx.mailmerge.advanced-mswordblocksdocument.png"
  475. format="PNG" />
  476. </para>
  477. <para>
  478. Das resultierende Dokument als <acronym>PDF</acronym> im Document Viewer
  479. 2.26.1 (<ulink
  480. url="figures/zend.service.livedocx.mailmerge.advanced-mswordblocksdocument_zoom.png">größer
  481. darstellen</ulink>).
  482. </para>
  483. <para>
  484. Man kann die <acronym>DOC</acronym> <ulink
  485. url="http://www.phplivedocx.org/wp-content/uploads/2009/01/telephone-bill-template.doc">Template
  486. Datei</ulink> und das resultierende <ulink
  487. url="http://www.phplivedocx.org/wp-content/uploads/2009/01/telephone-bill-document.pdf">PDF
  488. Dokument</ulink> hier herunterladen.
  489. </para>
  490. <para>
  491. <emphasis>BEACHTE:</emphasis> Blöcke können nicht verschachtelt werden.
  492. </para>
  493. </sect3>
  494. <sect3 id="zend.service.livedocx.mailmerge.bitmaps">
  495. <title>Erstellen von Bitmap Bildern</title>
  496. <para>
  497. Zusätzlich zu den Dateiformaten für Dokumente erlaubt es
  498. <classname>Zend_Service_LiveDocx_MailMerge</classname> auch Dokumente als eine
  499. Anzahl von Bildern zu speichern (<acronym>BMP</acronym>,
  500. <acronym>GIF</acronym>, <acronym>JPG</acronym>, <acronym>PNG</acronym> und
  501. <acronym>TIFF</acronym>). Jede Seite des Dokuments wird als eine Datei gespeichert.
  502. </para>
  503. <para>
  504. Das folgende Beispiel zeigt die Verwendung von <methodname>getBitmaps($fromPage,
  505. $toPage, $zoomFactor, $format)</methodname> und
  506. <methodname>getAllBitmaps($zoomFactor, $format)</methodname>.
  507. </para>
  508. <para>
  509. <varname>$fromPage</varname> ist die untere Grenze der Seitenzahl des Bereichs an
  510. Seiten die als Bild zurückgegeben werden soll, und <varname>$toPage</varname> ist
  511. die obere Grenze der Seitenzahlen. <varname>$zoomFactor</varname> ist die Größe
  512. der Bilder, als Prozentwert, relativ zur originalen Seitengröße. Der Bereich dieses
  513. Parameters ist von 10 bis 400. <varname>$format</varname> ist das Format des
  514. Bildes welches von dieser Methode zurückgegeben wird. Die unterstützten Formate
  515. erhält man, wenn man <methodname>getImageFormats()</methodname> aufruft.
  516. </para>
  517. <programlisting language="php"><![CDATA[
  518. $date = new Zend_Date();
  519. $date->setLocale('en_US');
  520. $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge();
  521. $phpLiveDocx->setUsername('myUsername')
  522. ->setPassword('myPassword');
  523. $phpLiveDocx->setLocalTemplate('template.docx');
  524. $phpLiveDocx->assign('software', 'Magic Graphical Compression Suite v1.9')
  525. ->assign('licensee', 'Daï Lemaitre')
  526. ->assign('company', 'Megasoft Co-operation')
  527. ->assign('date', $date->get(Zend_Date::DATE_LONG))
  528. ->assign('time', $date->get(Zend_Date::TIME_LONG))
  529. ->assign('city', 'Lyon')
  530. ->assign('country', 'France');
  531. $phpLiveDocx->createDocument();
  532. // Alle Bitmaps holen
  533. // (zoomFactor, format)
  534. $bitmaps = $phpLiveDocx->getAllBitmaps(100, 'png');
  535. // Nur Bitmaps im spezifizierten Bereich erhalten
  536. // (fromPage, toPage, zoomFactor, format)
  537. // $bitmaps = $phpLiveDocx->getBitmaps(2, 2, 100, 'png');
  538. foreach ($bitmaps as $pageNumber => $bitmapData) {
  539. $filename = sprintf('documentPage%d.png', $pageNumber);
  540. file_put_contents($filename, $bitmapData);
  541. }
  542. ]]></programlisting>
  543. <para>
  544. Das produziert zwei Bilder (<filename>documentPage1.png</filename> und
  545. <filename>documentPage2.png</filename>) und schreibt diese auf der Festplatte
  546. in das gleiche Verzeichnis wie die ausführbare PHP Datei.
  547. </para>
  548. <para>
  549. <inlinegraphic
  550. fileref="figures/zend.service.livedocx.mailmerge.bitmaps-documentpage1.png"
  551. format="PNG" />
  552. </para>
  553. <para>
  554. documentPage1.png (<ulink
  555. url="figures/zend.service.livedocx.mailmerge.bitmaps-documentpage1_zoom.png">größer
  556. darstellen</ulink>).
  557. </para>
  558. <para>
  559. <inlinegraphic
  560. fileref="figures/zend.service.livedocx.mailmerge.bitmaps-documentpage2.png"
  561. format="PNG" />
  562. </para>
  563. <para>
  564. documentPage2.png (<ulink
  565. url="figures/zend.service.livedocx.mailmerge.bitmaps-documentpage2_zoom.png">größer
  566. darstellen</ulink>).
  567. </para>
  568. </sect3>
  569. <sect3 id="zend.service.livedocx.mailmerge.templates-types">
  570. <title>Lokale vs. Remote Templates</title>
  571. <para>
  572. Templates können <emphasis>lokal</emphasis>, auf der Client Maschine, gespeichert
  573. werden, oder <emphasis>remote</emphasis> auf dem Server. Jede Variante hat Vorteile
  574. und Nachteile.
  575. </para>
  576. <para>
  577. Im Falle das ein Templage lokal gespeichert ist, muss es bei jeder Anfrage vom
  578. Client auf den Server transferiert werden. Wenn sich der Inhalt vom Templates
  579. selten ändert, ist dieser Weg sehr ineffizient. Ähnlich auch, wenn das Template eine
  580. Größe von mehreren Megabyte hat, kann es eine beträchtliche Zeit dauern es auf den
  581. Server zu transferieren. Lokale Templates sind in Situationen sinnvoll in denen der
  582. Inhalt des Templates konstant geändert wird.
  583. </para>
  584. <para>
  585. Der folgende Code zeigt wie man ein lokales Template verwendet.
  586. </para>
  587. <programlisting language="php"><![CDATA[
  588. $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge();
  589. $phpLiveDocx->setUsername('myUsername')
  590. ->setPassword('myPassword');
  591. $phpLiveDocx->setLocalTemplate('./template.docx');
  592. // Daten hinzufügen und das Dokument erstellen
  593. ]]></programlisting>
  594. <para>
  595. Im Fall das ein Template remote gespeichert ist, wird es nur einmal auf den Server
  596. geladen und anschließend bei allen nachfolgenden Anfragen darauf referenziert.
  597. Natürlich ist das viel schneller als ein lokales Template zu verwenden, da das
  598. Template nicht bei jeder Anfrage übertragen werden muss. Für Anwendungen bei denen
  599. die Geschwindigkeit kritisch ist, wird es Empfohlen die Remote Template Methode zu
  600. verwenden.
  601. </para>
  602. <para>
  603. Der folgende Code zeigt wie ein Template auf den Server übertragen wird:
  604. </para>
  605. <programlisting language="php"><![CDATA[
  606. $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge();
  607. $phpLiveDocx->setUsername('myUsername')
  608. ->setPassword('myPassword');
  609. $phpLiveDocx->uploadTemplate('template.docx');
  610. ]]></programlisting>
  611. <para>
  612. Der folgende Code zeigt wie auf das remote gespeicherte Template bei allen
  613. weiteren Anfragen referenziert wird:
  614. </para>
  615. <programlisting language="php"><![CDATA[
  616. $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge();
  617. $phpLiveDocx->setUsername('myUsername')
  618. ->setPassword('myPassword');
  619. $phpLiveDocx->setRemoteTemplate('template.docx');
  620. // assign data and create document
  621. ]]></programlisting>
  622. </sect3>
  623. <sect3 id="zend.service.livedocx.mailmerge.information">
  624. <title>Informationen erhalten</title>
  625. <para>
  626. <classname>Zend_Service_LiveDocx_MailMerge</classname> bietet eine Anzahl an
  627. Methoden um Informationen über Feldnamen, vorhandene Schriftarten und unterstützte
  628. Formate zu erhalten.
  629. </para>
  630. <example id="zend.service.livedocx.mailmerge.information.getfieldname">
  631. <title>Ein Array an Feldnamen vom Template erhalten</title>
  632. <para>
  633. Der folgende Code retourniert und zeigt ein Array aller Feldnamen im
  634. spezifizierten Template an. Diese Funktionalität ist nützlich, wenn man eine
  635. Anwendung erstellt, in welcher der End-Benutzer das Template aktualisieren kann.
  636. </para>
  637. <programlisting language="php"><![CDATA[
  638. $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge();
  639. $phpLiveDocx->setUsername('myUsername')
  640. ->setPassword('myPassword');
  641. $templateName = 'template-1-text-field.docx';
  642. $phpLiveDocx->setLocalTemplate($templateName);
  643. $fieldNames = $phpLiveDocx->getFieldNames();
  644. foreach ($fieldNames as $fieldName) {
  645. printf('- %s%s', $fieldName, PHP_EOL);
  646. }
  647. ]]></programlisting>
  648. </example>
  649. <example id="zend.service.livedocx.mailmerge.information.getblockfieldname">
  650. <title>Ein Array an Block Feldnamen vom Template erhalten</title>
  651. <para>
  652. Der folgende Code retourniert und zeigt ein Array aller Block Feldnamen im
  653. spezifizierten Template an. Diese Funktionalität ist nützlich, wenn man eine
  654. Anwendung erstellt, in welcher der End-Benutzer das Template aktualisieren kann.
  655. Bevor solche Templates veröffentlicht werden können, ist es notwendig die Namen
  656. der enthaltenen Blockfelder herauszufinden.
  657. </para>
  658. <programlisting language="php"><![CDATA[
  659. $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge();
  660. $phpLiveDocx->setUsername('myUsername')
  661. ->setPassword('myPassword');
  662. $templateName = 'template-block-fields.doc';
  663. $phpLiveDocx->setLocalTemplate($templateName);
  664. $blockNames = $phpLiveDocx->getBlockNames();
  665. foreach ($blockNames as $blockName) {
  666. $blockFieldNames = $phpLiveDocx->getBlockFieldNames($blockName);
  667. foreach ($blockFieldNames as $blockFieldName) {
  668. printf('- %s::%s%s', $blockName, $blockFieldName, PHP_EOL);
  669. }
  670. }
  671. ]]></programlisting>
  672. </example>
  673. <example id="zend.service.livedocx.mailmerge.information.getfontnames">
  674. <title>
  675. Ein Array von Schriftarten erhalten welche auf dem Server installiert sind
  676. </title>
  677. <para>
  678. Der folgende Code retourniert und zeigt ein Array aller auf dem Server
  679. installierten Schriftarten an. Diese Methode kann verwendet werden um eine Liste
  680. von Schriftarten anzuzeigen welche in einem Template verwendet werden können.
  681. Das ist nützlich um den Endbenutzer über die auf dem Server installierten
  682. Schriften zu informieren, da nur diese Schriftarten in einem Template verwendet
  683. werden können. Im Falle das ein Template Schriften enthänt, welche auf dem
  684. Server nicht enthalten sind, wird eine andere Schriftart verwendet. Dies kann
  685. zu unerwünschten Ergebnissen führen.
  686. </para>
  687. <programlisting language="php"><![CDATA[
  688. $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge();
  689. $phpLiveDocx->setUsername('myUsername')
  690. ->setPassword('myPassword');
  691. Zend_Debug::dump($phpLiveDocx->getFontNames());
  692. ]]></programlisting>
  693. <para>
  694. <emphasis>BEACHTE:</emphasis> Da sich der Rückgabewert diese Methode sehr
  695. selten ändert, ist es sehr empfehlenswert einen Cache zu verwenden, wie z.B.
  696. <classname>Zend_Cache</classname> - das macht die Anwendung sichtbar schneller.
  697. </para>
  698. </example>
  699. <example id="zend.service.livedocx.mailmerge.information.gettemplateformats">
  700. <title>Ein Array an unterstützten Dateiformaten für Templates erhalten</title>
  701. <para>
  702. Der folgende Code retourniert und zeigt ein Array aller unterstützten
  703. Dateiformate für Templates. Diese Methode ist partiell nützlich im Fall das
  704. eine Kombinationsbox angezeigt werden soll, welche es dem Endbenutzer erlaubt
  705. das Eingabeformat für den Erstellungsprozess des Dokuments auszuwählen.
  706. </para>
  707. <programlisting language="php"><![CDATA[
  708. $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge()
  709. $phpLiveDocx->setUsername('myUsername')
  710. ->setPassword('myPassword');
  711. Zend_Debug::dump($phpLiveDocx->getTemplateFormats());
  712. ]]></programlisting>
  713. <para>
  714. <emphasis>BEACHTE:</emphasis> Da sich der Rückgabewert diese Methode sehr
  715. selten ändert, ist es sehr empfehlenswert einen Cache zu verwenden, wie z.B.
  716. <classname>Zend_Cache</classname> - das macht die Anwendung sichtbar schneller.
  717. </para>
  718. </example>
  719. <example id="zend.service.livedocx.mailmerge.information.getdocumentformats">
  720. <title>Ein Array an unterstützten Dateiformaten für Dokumente erhalten</title>
  721. <para>
  722. Der folgende Code retourniert und zeigt ein Array aller unterstützten
  723. Dateiformate für Dokumente. Diese Methode ist partiell nützlich im Fall das
  724. eine Kombinationsliste angezeigt werden soll, welche es dem Endbenutzer erlaubt
  725. das Ausgabeformat für den Erstellungsprozess des Dokuments auszuwählen.
  726. </para>
  727. <programlisting language="php"><![CDATA[
  728. $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge();
  729. $phpLiveDocx->setUsername('myUsername')
  730. ->setPassword('myPassword');
  731. Zend_Debug::dump($phpLiveDocx->getDocumentFormats());
  732. ]]></programlisting>
  733. </example>
  734. <example id="zend.service.livedocx.mailmerge.information.getimageformats">
  735. <title>Ein Array an unterstützten Dateiformaten für Bilder erhalten</title>
  736. <para>
  737. Der folgende Code retourniert und zeigt ein Array aller unterstützten
  738. Dateiformate für Bilder. Diese Methode ist partiell nützlich im Fall das
  739. eine Kombinationsliste angezeigt werden soll, welche es dem Endbenutzer erlaubt
  740. das Ausgabeformat für den Erstellungsprozess des Dokuments auszuwählen.
  741. </para>
  742. <programlisting language="php"><![CDATA[
  743. $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge();
  744. $phpLiveDocx->setUsername('myUsername')
  745. ->setPassword('myPassword');
  746. Zend_Debug::dump($phpLiveDocx->getImageFormats());
  747. ]]></programlisting>
  748. <para>
  749. <emphasis>BEACHTE:</emphasis> Da sich der Rückgabewert diese Methode sehr
  750. selten ändert, ist es sehr empfehlenswert einen Cache zu verwenden, wie z.B.
  751. <classname>Zend_Cache</classname> - das macht die Anwendung sichtbar schneller.
  752. </para>
  753. </example>
  754. </sect3>
  755. </sect2>
  756. </sect1>
  757. <!--
  758. vim:se ts=4 sw=4 tw=100 et:
  759. -->