Zend_Service_LiveDocx.xml 37 KB

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