| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- Reviewed: no -->
- <sect1 id="zend.service.livedocx">
- <title>Zend_Service_LiveDocx</title>
- <sect2 id="zend.service.livedocx.introduction">
- <title>Introduction to LiveDocx</title>
- <para>
- LiveDocx is a <acronym>SOAP</acronym> service that allows developers to generate word
- processing documents by combining structured data from <acronym>PHP</acronym> with a
- template, created in a word processor. The resulting document can be saved as a
- <acronym>PDF</acronym>, <acronym>DOCX</acronym>, <acronym>DOC</acronym>,
- <acronym>HTML</acronym> or <acronym>RTF</acronym> file. LiveDocx implements <ulink
- url="http://en.wikipedia.org/wiki/Mail_merge">mail-merge</ulink> in
- <acronym>PHP</acronym>.
- </para>
- <para>
- The family of <classname>Zend_Service_LiveDocx</classname> components provides a clean
- and simple interface to the <ulink url="http://www.livedocx.com">LiveDocx API</ulink>
- and additionally offers functionality to improve network performance.
- </para>
- <para>
- In addition to this section of the manual, if you are interested in learning more about
- <classname>Zend_Service_LiveDocx</classname> and the backend <acronym>SOAP</acronym>
- service LiveDocx, please take a look at the following resources:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>Shipped demonstration applications</emphasis>. There are a large
- number of demonstration applications in the directory
- <emphasis>/demos/Zend/Service/LiveDocx</emphasis> of the Zend Framework
- distribution file or trunk version, checked out of the standard SVN repository.
- These are designed to get you up to speed with
- <classname>Zend_Service_LiveDocx</classname> within a matter of minutes.
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="http://www.phplivedocx.org/">
- <classname>Zend_Service_LiveDocx</classname> blog and web site</ulink>.
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="http://www.livedocx.com/pub/documentation/api.aspx">
- LiveDocx SOAP API documentation</ulink>.
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="https://api.livedocx.com/1.2/mailmerge.asmx?wsdl">
- LiveDocx WSDL</ulink>.
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="https://www.livedocx.com/">LiveDocx blog and web site</ulink>.
- </para>
- </listitem>
- </itemizedlist>
- <sect3 id="zend.service.livedocx.account">
- <title>Sign Up for an Account</title>
- <para>
- Before you can start using LiveDocx, you must first <ulink
- url="https://www.livedocx.com/user/account_registration.aspx">sign up</ulink>
- for an account. The account is completely free of charge and you only need to
- specify a <emphasis>username</emphasis>, <emphasis>password</emphasis> and
- <emphasis>e-mail address</emphasis>. Your login credentials will be dispatched to
- the e-mail address you supply, so please type carefully.
- </para>
- </sect3>
- <sect3 id="zend.service.livedocx.templates-documents">
- <title>Templates and Documents</title>
- <para>
- LiveDocx differentiates between the following terms: 1)
- <emphasis>template</emphasis> and 2) <emphasis>document</emphasis>. In order to
- fully understand the documentation and indeed the actual <acronym>API</acronym>, it
- is important that any programmer deploying LiveDocx understands the difference.
- </para>
- <para>
- The term <emphasis>template</emphasis> is used to refer to the input file, created
- in a word processor, containing formatting and text fields. You can download an
- <ulink
- url="http://www.phplivedocx.org/wp-content/uploads/2009/01/license-agreement-template.docx">example
- template</ulink>, stored as a <acronym>DOCX</acronym> file. The term
- <emphasis>document</emphasis> is used to refer to the output file that contains the
- template file, populated with data - i.e. the finished document. You can download an
- <ulink
- url="http://www.phplivedocx.org/wp-content/uploads/2009/01/license-agreement-document.pdf">example
- document</ulink>, stored as a <acronym>PDF</acronym> file.
- </para>
- </sect3>
- <sect3 id="zend.service.livedocx.formats">
- <title>Supported File Formats</title>
- <para>
- LiveDocx supports the following file formats:
- </para>
- <sect4 id="zend.service.livedocx.formats.template">
- <title>Template File Formats (input)</title>
- <para>
- Templates can be saved in any of the following file formats:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/Office_Open_XML">DOCX</ulink> -
- Office Open <acronym>XML</acronym> format
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/DOC_(computing)">DOC</ulink> -
- Microsoft Word <acronym>DOC</acronym> format
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/Rich_Text_Format">RTF</ulink> -
- Rich text file format
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="http://www.textcontrol.com/">TXD</ulink> - TX Text Control
- format
- </para>
- </listitem>
- </itemizedlist>
- </sect4>
- <sect4 id="zend.service.livedocx.formats.document">
- <title>Document File Formats (output):</title>
- <para>
- The resulting document can be saved in any of the following file formats:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/Office_Open_XML">DOCX</ulink> -
- Office Open <acronym>XML</acronym> format
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/DOC_(computing)">DOC</ulink> -
- Microsoft Word <acronym>DOC</acronym> format
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/Xhtml">HTML</ulink> -
- <acronym>XHTML</acronym> 1.0 transitional format
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/Rich_Text_Format">RTF</ulink> -
- Rich text file format
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink
- url="http://en.wikipedia.org/wiki/Portable_Document_Format">PDF</ulink>
- - Acrobat Portable Document Format
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="http://www.textcontrol.com/">TXD</ulink> - TX Text Control
- format
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/Text_file">TXT</ulink> -
- <acronym>ANSI</acronym> plain text
- </para>
- </listitem>
- </itemizedlist>
- </sect4>
- <sect4 id="zend.service.livedocx.formats.imageimport">
- <title>Image File Formats (import):</title>
- <para>
- Images can be merged into templates in any of following file formats:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/BMP_file_format">BMP</ulink> -
- Bitmap image format
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/GIF">GIF</ulink> - Graphics
- Interchange Format
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/Jpg">JPG</ulink> - Joint
- Photographic Experts Group format
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink
- url="http://en.wikipedia.org/wiki/Portable_Network_Graphics">PNG</ulink>
- - Portable Network Graphics format
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink
- url="http://en.wikipedia.org/wiki/Tagged_Image_File_Format">TIFF</ulink>
- - Tagged Image File Format
- </para>
- </listitem>
- </itemizedlist>
- </sect4>
- <sect4 id="zend.service.livedocx.formats.imageexport">
- <title>Image File Formats (output):</title>
- <para>
- The resulting document can be exported to any of the following graphical file
- formats:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/BMP_file_format">BMP</ulink> -
- Bitmap image format
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/GIF">GIF</ulink> - Graphics
- Interchange Format
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/Jpg">JPG</ulink> - Joint
- Photographic Experts Group format
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink
- url="http://en.wikipedia.org/wiki/Portable_Network_Graphics">PNG</ulink>
- - Portable Network Graphics format
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink
- url="http://en.wikipedia.org/wiki/Tagged_Image_File_Format">TIFF</ulink>
- - Tagged Image File Format
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/Windows_Metafile">WMF</ulink> -
- Windows Meta File format
- </para>
- </listitem>
- </itemizedlist>
- </sect4>
- </sect3>
- </sect2>
- <sect2 id="zend.service.livedocx.mailmerge">
- <title>Zend_Service_LiveDocx_MailMerge</title>
- <para>
- <classname>Zend_Service_LiveDocx_MailMerge</classname> is the mail-merge object in the
- <classname>Zend_Service_LiveDocx</classname> family.
- </para>
- <sect3 id="zend.service.livedocx.mailmerge.generation">
- <title>Document Generation Process</title>
- <para>
- The document generation process can be simplified with the following equation:
- </para>
- <para>
- <emphasis>Template + Data = Document</emphasis>
- </para>
- <para>
- Or expressed by the following diagram:
- </para>
- <para>
- <inlinegraphic
- fileref="figures/zend.service.livedocx.mailmerge.generation-diabasic_zoom.png"
- format="PNG" />
- </para>
- <para>
- Data is inserted into template to create a document.
- </para>
- <para>
- A template, created in a word processing application, such as Microsoft Word, is
- loaded into LiveDocx. Data is then inserted into the template and the resulting
- document is saved to any supported format.
- </para>
- </sect3>
- <sect3 id="zend.service.livedocx.mailmerge.templates">
- <title>Creating Templates in Microsoft Word 2007</title>
- <para>
- Start off by launching Microsoft Word and creating a new document. Next, open up the
- <emphasis>Field</emphasis> dialog box. This looks as follows:
- </para>
- <para>
- <inlinegraphic
- fileref="figures/zend.service.livedocx.mailmerge.templates-msworddialog_zoom.png"
- format="PNG" />
- </para>
- <para>
- Microsoft Word 2007 Field dialog box.
- </para>
- <para>
- Using this dialog, you can insert the required merge fields into your document.
- Below is a screenshot of a license agreement in Microsoft Word 2007. The merge
- fields are marked as <command>{ MERGEFIELD FieldName }</command>:
- </para>
- <para>
- <inlinegraphic
- fileref="figures/zend.service.livedocx.mailmerge.templates-mswordtemplatefull_zoom.png"
- format="PNG" />
- </para>
- <para>
- Template in Microsoft Word 2007.
- </para>
- <para>
- Now, save the template as <emphasis>template.docx</emphasis>.
- </para>
- <para>
- In the next step, we are going to populate the merge fields with textual data from
- <acronym>PHP</acronym>.
- </para>
- <para>
- <inlinegraphic
- fileref="figures/zend.service.livedocx.mailmerge.templates-mswordtemplatecropped_zoom.png"
- format="PNG" />
- </para>
- <para>
- Cropped template in Microsoft Word 2007.
- </para>
- <para>
- To populate the merge fields in the above cropped screenshot of the <ulink
- url="http://www.phplivedocx.org/wp-content/uploads/2009/01/license-agreement-template.docx">template</ulink>
- in Microsoft Word, all we have to code is as follows:
- </para>
- <programlisting language="php"><![CDATA[
- $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge();
- $phpLiveDocx->setUsername('myUsername')
- ->setPassword('myPassword');
- $phpLiveDocx->setLocalTemplate('template.docx');
- $phpLiveDocx->assign('software', 'Magic Graphical Compression Suite v1.9')
- ->assign('licensee', 'Henry Döner-Meyer')
- ->assign('company', 'Co-Operation');
- $phpLiveDocx->createDocument();
- $document = $phpLiveDocx->retrieveDocument('pdf');
- file_put_contents('document.pdf', $document);
- ]]></programlisting>
- <para>
- The resulting document is written to disk in the file
- <emphasis>document.pdf</emphasis>. This file can now be post-processed, sent via
- e-mail or simply displayed, as is illustrated below in <emphasis>Document Viewer
- 2.26.1</emphasis> on <emphasis>Ubuntu 9.04</emphasis>:
- </para>
- <para>
- <inlinegraphic
- fileref="figures/zend.service.livedocx.mailmerge.templates-msworddocument_zoom.png"
- format="PNG" />
- </para>
- <para>
- Resulting document as <acronym>PDF</acronym> in Document Viewer 2.26.1.
- </para>
- </sect3>
- <sect3 id="zend.service.livedocx.mailmerge.imagemerge">
- <title>Merging image data</title>
- <para>
- Using <classname>Zend_Service_LiveDocx_MailMerge</classname> it is also possible to merge images into
- a template. This feature is useful, for example, in the case of a badge application
- for a conference. In addition to the name and company name that should appear on
- the badge, it is possible to insert a photo of the delegate, using the API.
- </para>
- <para>
- Even it is sounds a little counter-intuitive, image-merging also work with
- text fields, as described in the section above. In fact, inserting a text field
- for an image is identical to inserting a text field for textual information.
- The only difference is the naming convention of the text field. Whereas, a text
- field for textual information can have (almost) any identifier, a text field for
- an image must start with <emphasis>image:</emphasis>. For example, in the case of our badge
- application, we would have the following 3 fields:
- </para>
- <para>
- <inlinegraphic
- fileref="figures/zend.service.livedocx.mailmerge.templates-imagemerge_zoom.png"
- format="PNG" />
- </para>
- <para>
- The text field, into which image data will be inserted is called <emphasis>image:photo</emphasis>
- and can be populated just like any other text field, using the assign method. The
- text fields <emphasis>name</emphasis> and <emphasis>company</emphasis> are regular
- text fields for textual information.
- </para>
- <para>
- Before we insert graphic data, we first have to upload the image to the backend
- LiveDocx server. This can be achieved using the <emphasis>uploadImage($filename)</emphasis> method.
- </para>
- <para>The following code snippet illustrates the flow:</para>
- <programlisting language="php"><![CDATA[
- $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge();
- $phpLiveDocx->setUsername('username')
- ->setPassword('password');
- $photoFilename = 'dailemaitre.jpg';
- if (!$phpLiveDocx->imageExists($photoFilename)) {
- $phpLiveDocx->uploadImage($photoFilename);
- }
- $phpLiveDocx->setLocalTemplate('template.docx');
- $phpLiveDocx->assign('name', 'Daï Lemaitre')
- ->assign('company', 'Megasoft Co-operation')
- ->assign('date', Zend_Date::now()->toString(Zend_Date::DATE_LONG))
- ->assign('image:photo', $photoFilename);
- $phpLiveDocx->createDocument();
- $document = $phpLiveDocx->retrieveDocument('pdf');
- file_put_contents('document.pdf', $document);
- $phpLiveDocx->deleteImage($photoFilename);
- ]]></programlisting>
- <para>
- Note that all images uploaded to your LiveDocx account must have a unique
- filename. In the case that you only intend to use the image once (such
- as is probable for our badge application), it makes sense to immediately
- delete it from the backend, using the <emphasis>deleteImage($filename)</emphasis> method.
- </para>
- </sect3>
- <sect3 id="zend.service.livedocx.mailmerge.advanced">
- <title>Advanced Mail-Merge</title>
- <para>
- <classname>Zend_Service_LiveDocx_MailMerge</classname> allows designers to insert
- any number of text fields into a template. These text fields are populated with data
- when <emphasis>createDocument()</emphasis> is called.
- </para>
- <para>
- In addition to text fields, it is also possible specify regions of a document, which
- should be repeated.
- </para>
- <para>
- For example, in a telephone bill it is necessary to print out a list of all
- connections, including the destination number, duration and cost of each call. This
- repeating row functionality can be achieved with so called blocks.
- </para>
- <para>
- <emphasis>Blocks</emphasis> are simply regions of a document, which are repeated
- when <methodname>createDocument()</methodname> is called. In a block any number of
- <emphasis>block fields</emphasis> can be specified.
- </para>
- <para>
- Blocks consist of two consecutive document targets with a unique name. The following
- screenshot illustrates these targets and their names in red:
- </para>
- <para>
- <inlinegraphic
- fileref="figures/zend.service.livedocx.mailmerge.advanced-mergefieldblockformat_zoom.png"
- format="PNG" />
- </para>
- <para>
- The format of a block is as follows:
- </para>
- <programlisting language="text"><![CDATA[
- blockStart_ + unique name
- blockEnd_ + unique name
- ]]></programlisting>
- <para>For example:</para>
- <programlisting language="text"><![CDATA[
- blockStart_block1
- blockEnd_block1
- ]]></programlisting>
- <para>
- The content of a block is repeated, until all data assigned in the block fields has
- been injected into the template. The data for block fields is specified in
- <acronym>PHP</acronym> as a multi-assoc array.
- </para>
- <para>
- The following screenshot of a template in Microsoft Word 2007 shows how block fields
- are used:
- </para>
- <para>
- <inlinegraphic
- fileref="figures/zend.service.livedocx.mailmerge.advanced-mswordblockstemplate_zoom.png"
- format="PNG" />
- </para>
- <para>
- Template, illustrating blocks in Microsoft Word 2007.
- </para>
- <para>
- The following code populates the above template with data.
- </para>
- <programlisting language="php"><![CDATA[
- $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge();
- $phpLiveDocx->setUsername('myUsername')
- ->setPassword('myPassword');
- $phpLiveDocx->setLocalTemplate('template.doc');
- $billConnections = array(
- array(
- 'connection_number' => '+49 421 335 912',
- 'connection_duration' => '00:00:07',
- 'fee' => '€ 0.03',
- ),
- array(
- 'connection_number' => '+49 421 335 913',
- 'connection_duration' => '00:00:07',
- 'fee' => '€ 0.03',
- ),
- array(
- 'connection_number' => '+49 421 335 914',
- 'connection_duration' => '00:00:07',
- 'fee' => '€ 0.03',
- ),
- array(
- 'connection_number' => '+49 421 335 916',
- 'connection_duration' => '00:00:07',
- 'fee' => '€ 0.03',
- ),
- );
- $phpLiveDocx->assign('connection', $billConnections);
- // ... assign other data here ...
- $phpLiveDocx->createDocument();
- $document = $phpLiveDocx->retrieveDocument('pdf');
- file_put_contents('document.pdf', $document);
- ]]></programlisting>
- <para>
- The data, which is specified in the array <varname>$billConnections</varname> is
- repeated in the template in the block connection. The keys of the array
- (<varname>connection_number</varname>, <varname>connection_duration</varname> and
- <varname>fee</varname>) are the block field names - their data is inserted, one row
- per iteration.
- </para>
- <para>
- The resulting document is written to disk in the file
- <emphasis>document.pdf</emphasis>. This file can now be post-processed, sent via
- e-mail or simply displayed, as is illustrated below in <emphasis>Document Viewer
- 2.26.1</emphasis> on <emphasis>Ubuntu 9.04</emphasis>:
- </para>
- <para>
- <inlinegraphic
- fileref="figures/zend.service.livedocx.mailmerge.advanced-mswordblocksdocument_zoom.png"
- format="PNG" />
- </para>
- <para>
- Resulting document as <acronym>PDF</acronym> in Document Viewer 2.26.1.
- </para>
- <para>
- You can download the <acronym>DOC</acronym> <ulink
- url="http://www.phplivedocx.org/wp-content/uploads/2009/01/telephone-bill-template.doc">template
- file</ulink> and the resulting <ulink
- url="http://www.phplivedocx.org/wp-content/uploads/2009/01/telephone-bill-document.pdf">PDF
- document</ulink>.
- </para>
- <para>
- <emphasis>NOTE:</emphasis> blocks may not be nested.
- </para>
- </sect3>
- <sect3 id="zend.service.livedocx.mailmerge.bitmaps">
- <title>Generating bitmaps image files</title>
- <para>
- In addition to document file formats,
- <classname>Zend_Service_LiveDocx_MailMerge</classname> also allows documents to be
- exported to a number of image file formats (<acronym>BMP</acronym>,
- <acronym>GIF</acronym>, <acronym>JPG</acronym>, <acronym>PNG</acronym> and
- <acronym>TIFF</acronym>). Each page of the document is saved to one file.
- </para>
- <para>
- The following sample illustrates the use of <methodname>getBitmaps($fromPage,
- $toPage, $zoomFactor, $format)</methodname> and
- <methodname>getAllBitmaps($zoomFactor, $format)</methodname>.
- </para>
- <para>
- <varname>$fromPage</varname> is the lower-bound page number of the page range that
- should be returned as an image and <varname>$toPage</varname> the upper-bound page
- number. <varname>$zoomFactor</varname> is the size of the images, as a percent,
- relative to the original page size. The range of this parameter is 10 to 400.
- <varname>$format</varname> is the format of the images returned by this method. The
- supported formats can be obtained by calling
- <methodname>getImageExportFormats()</methodname>.
- </para>
- <programlisting language="php"><![CDATA[
- $date = new Zend_Date();
- $date->setLocale('en_US');
- $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge();
- $phpLiveDocx->setUsername('myUsername')
- ->setPassword('myPassword');
- $phpLiveDocx->setLocalTemplate('template.docx');
- $phpLiveDocx->assign('software', 'Magic Graphical Compression Suite v1.9')
- ->assign('licensee', 'Daï Lemaitre')
- ->assign('company', 'Megasoft Co-operation')
- ->assign('date', $date->get(Zend_Date::DATE_LONG))
- ->assign('time', $date->get(Zend_Date::TIME_LONG))
- ->assign('city', 'Lyon')
- ->assign('country', 'France');
- $phpLiveDocx->createDocument();
- // Get all bitmaps
- // (zoomFactor, format)
- $bitmaps = $phpLiveDocx->getAllBitmaps(100, 'png');
- // Get just bitmaps in specified range
- // (fromPage, toPage, zoomFactor, format)
- // $bitmaps = $phpLiveDocx->getBitmaps(2, 2, 100, 'png');
- foreach ($bitmaps as $pageNumber => $bitmapData) {
- $filename = sprintf('documentPage%d.png', $pageNumber);
- file_put_contents($filename, $bitmapData);
- }
- ]]></programlisting>
- <para>
- This produces two files (<filename>documentPage1.png</filename> and
- <filename>documentPage2.png</filename>) and writes them to disk in the same
- directory as the executable <acronym>PHP</acronym> file.
- </para>
- <para>
- <inlinegraphic
- fileref="figures/zend.service.livedocx.mailmerge.bitmaps-documentpage1_zoom.png"
- format="PNG" />
- </para>
- <para>
- documentPage1.png.
- </para>
- <para>
- <inlinegraphic
- fileref="figures/zend.service.livedocx.mailmerge.bitmaps-documentpage2_zoom.png"
- format="PNG" />
- </para>
- <para>
- documentPage2.png.
- </para>
- </sect3>
- <sect3 id="zend.service.livedocx.mailmerge.templates-types">
- <title>Local vs. Remote Templates</title>
- <para>
- Templates can be stored <emphasis>locally</emphasis>, on the client machine, or
- <emphasis>remotely</emphasis>, on the server. There are advantages and disadvantages
- to each approach.
- </para>
- <para>
- In the case that a template is stored locally, it must be transfered from the client
- to the server on every request. If the content of the template rarely changes, this
- approach is inefficient. Similarly, if the template is several megabytes in size, it
- may take considerable time to transfer it to the server. Local template are useful
- in situations in which the content of the template is constantly changing.
- </para>
- <para>
- The following code illustrates how to use a local template.
- </para>
- <programlisting language="php"><![CDATA[
- $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge();
- $phpLiveDocx->setUsername('myUsername')
- ->setPassword('myPassword');
- $phpLiveDocx->setLocalTemplate('./template.docx');
- // assign data and create document
- ]]></programlisting>
- <para>
- In the case that a template is stored remotely, it is uploaded once to the server
- and then simply referenced on all subsequent requests. Obviously, this is much
- quicker than using a local template, as the template does not have to be transfered
- on every request. For speed critical applications, it is recommended to use the
- remote template method.
- </para>
- <para>
- The following code illustrates how to upload a template to the server:
- </para>
- <programlisting language="php"><![CDATA[
- $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge();
- $phpLiveDocx->setUsername('myUsername')
- ->setPassword('myPassword');
- $phpLiveDocx->uploadTemplate('template.docx');
- ]]></programlisting>
- <para>
- The following code illustrates how to reference the remotely stored template on all
- subsequent requests:
- </para>
- <programlisting language="php"><![CDATA[
- $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge();
- $phpLiveDocx->setUsername('myUsername')
- ->setPassword('myPassword');
- $phpLiveDocx->setRemoteTemplate('template.docx');
- // assign data and create document
- ]]></programlisting>
- </sect3>
- <sect3 id="zend.service.livedocx.mailmerge.information">
- <title>Getting Information</title>
- <para>
- <classname>Zend_Service_LiveDocx_MailMerge</classname> provides a number of methods
- to get information on field names, available fonts and supported formats.
- </para>
- <example id="zend.service.livedocx.mailmerge.information.getfieldname">
- <title>Get Array of Field Names in Template</title>
- <para>
- The following code returns and displays an array of all field names in the
- specified template. This functionality is useful, in the case that you create an
- application, in which an end-user can update a template.
- </para>
- <programlisting language="php"><![CDATA[
- $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge();
- $phpLiveDocx->setUsername('myUsername')
- ->setPassword('myPassword');
- $templateName = 'template-1-text-field.docx';
- $phpLiveDocx->setLocalTemplate($templateName);
- $fieldNames = $phpLiveDocx->getFieldNames();
- foreach ($fieldNames as $fieldName) {
- printf('- %s%s', $fieldName, PHP_EOL);
- }
- ]]></programlisting>
- </example>
- <example id="zend.service.livedocx.mailmerge.information.getblockfieldname">
- <title>Get Array of Block Field Names in Template</title>
- <para>
- The following code returns and displays an array of all block field names in the
- specified template. This functionality is useful, in the case that you create an
- application, in which an end-user can update a template. Before such templates
- can be populated, it is necessary to find out the names of the contained block
- fields.
- </para>
- <programlisting language="php"><![CDATA[
- $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge();
- $phpLiveDocx->setUsername('myUsername')
- ->setPassword('myPassword');
- $templateName = 'template-block-fields.doc';
- $phpLiveDocx->setLocalTemplate($templateName);
- $blockNames = $phpLiveDocx->getBlockNames();
- foreach ($blockNames as $blockName) {
- $blockFieldNames = $phpLiveDocx->getBlockFieldNames($blockName);
- foreach ($blockFieldNames as $blockFieldName) {
- printf('- %s::%s%s', $blockName, $blockFieldName, PHP_EOL);
- }
- }
- ]]></programlisting>
- </example>
- <example id="zend.service.livedocx.mailmerge.information.getfontnames">
- <title>Get Array of Fonts Installed on Server</title>
- <para>
- The following code returns and displays an array of all fonts installed on the
- server. You can use this method to present a list of fonts which may be used in
- a template. It is important to inform the end-user about the fonts installed on
- the server, as only these fonts may be used in a template. In the case that a
- template contains fonts, which are not available on the server,
- font-substitution will take place. This may lead to undesirable results.
- </para>
- <programlisting language="php"><![CDATA[
- $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge();
- $phpLiveDocx->setUsername('myUsername')
- ->setPassword('myPassword');
- Zend_Debug::dump($phpLiveDocx->getFontNames());
- ]]></programlisting>
- <para>
- <emphasis>NOTE:</emphasis> As the return value of this method changes very
- infrequently, it is highly recommended to use a cache, such as
- <classname>Zend_Cache</classname> - this will considerably speed up your
- application.
- </para>
- </example>
- <example id="zend.service.livedocx.mailmerge.information.gettemplateformats">
- <title>Get Array of Supported Template File Formats</title>
- <para>
- The following code returns and displays an array of all supported template file
- formats. This method is particularly useful in the case that a combo list should
- be displayed that allows the end-user to select the input format of the
- documentation generation process.
- </para>
- <programlisting language="php"><![CDATA[
- $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge()
- $phpLiveDocx->setUsername('myUsername')
- ->setPassword('myPassword');
- Zend_Debug::dump($phpLiveDocx->getTemplateFormats());
- ]]></programlisting>
- <para>
- <emphasis>NOTE:</emphasis> As the return value of this method changes very
- infrequently, it is highly recommended to use a cache, such as
- <classname>Zend_Cache</classname> - this will considerably speed up your
- application.
- </para>
- </example>
- <example id="zend.service.livedocx.mailmerge.information.getdocumentformats">
- <title>Get Array of Supported Document File Formats</title>
- <para>
- The following code returns and displays an array of all supported document file
- formats. This method is particularly useful in the case that a combo list should
- be displayed that allows the end-user to select the output format of the
- documentation generation process.
- </para>
- <programlisting language="php"><![CDATA[
- $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge();
- $phpLiveDocx->setUsername('myUsername')
- ->setPassword('myPassword');
- Zend_Debug::dump($phpLiveDocx->getDocumentFormats());
- ]]></programlisting>
- </example>
- <example id="zend.service.livedocx.mailmerge.information.getimageimportformats">
- <title>Get Array of Supported Image Import File Formats</title>
- <para>
- The following code returns and displays an array of all supported imput image file
- formats.
- </para>
- <programlisting language="php"><![CDATA[
- $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge();
- $phpLiveDocx->setUsername('myUsername')
- ->setPassword('myPassword');
- Zend_Debug::dump($phpLiveDocx->getImageImportFormats());
- ]]></programlisting>
- <para>
- <emphasis>NOTE:</emphasis> As the return value of this method changes very
- infrequently, it is highly recommended to use a cache, such as
- <classname>Zend_Cache</classname> - this will considerably speed up your
- application.
- </para>
- </example>
- <example id="zend.service.livedocx.mailmerge.information.getimageexportformats">
- <title>Get Array of Supported Image Export File Formats</title>
- <para>
- The following code returns and displays an array of all supported export image file
- formats. This method is particularly useful in the case that a combo list should
- be displayed that allows the end-user to select the output format of the
- documentation generation process.
- </para>
- <programlisting language="php"><![CDATA[
- $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge();
- $phpLiveDocx->setUsername('myUsername')
- ->setPassword('myPassword');
- Zend_Debug::dump($phpLiveDocx->getImageExportFormats());
- ]]></programlisting>
- <para>
- <emphasis>NOTE:</emphasis> As the return value of this method changes very
- infrequently, it is highly recommended to use a cache, such as
- <classname>Zend_Cache</classname> - this will considerably speed up your
- application.
- </para>
- </example>
- </sect3>
- </sect2>
- </sect1>
- <!--
- vim:se ts=4 sw=4 tw=100 et:
- -->
|