<reference id="ref.cpdf">
  <title>ClibPDF functions</title>
  <titleabbrev>ClibPDF</titleabbrev>

  <partintro>

   <simpara>
    ClibPDF allows to create pdf documents with PHP. It is available at
    <ulink url="http://www.fastio.com">FastIO</ulink> but is not free
    software. You should definitely read the licence before you start
    playing with ClibPDF. If you cannot fullfil the licence agreement
    consider using pdflib by Thomas Merz, which is also very powerful.
    ClibPDF functionality and API is similar to Thomas Merz pdflib but
    ClibPDF is, according to FastIO, faster and creates smaller documents.
    This may have changed with the new version 2.0 of pdflib.  A simple
    benchmark (the pdfclock.c example from pdflib 2.0 turned into a php
    script) actually show no difference in speed at all. The file size
    is also similar if compression is turned off.

   <simpara>
    This documentation should be read with the ClibPDF manual since it
    explains much of the library in much more detail. Once you understand
    the manual of ClibPDF you should be able to start using the library
    with PHP.

   <simpara>
    Many functions in the native ClibPDF and the PHP module, as
    well as in pdflib, have the same name.  All functions except for
    <function>cpdf_open</function> take as their first parameter the
    handle for the document on which the function is to be performed.
    Currently this handle is not used internally since ClibPDF does
    not support the creation of several PDF documents at the same time.
    Actually, you should not even try it, the results are unpredictable. I
    cannot oversee what the consequences in a multi threaded environment
    are.  According to the author of ClibPDF this will change in one of
    the next releases (current version when this was written is 1.10).
    If you need this functionality use the pdflib module.

   <simpara>
    One big advantage of ClibPDF over pdflib is the possibility to create
    the pdf document completely in memory without using temporary files.
    It also provides the ability to pass coordinates in a predefined
    unit length. This is a handy feature but can be simulated with
    <function>pdf_translate</function>.

   <simpara>
    Most of the functions are fairly easy to use. The most difficult part
    is probably creating a very simple PDF document at all. The following
    example should help you get started. It creates a document
    with one page. The page contains the text "Times-Roman" in an
    outlined 30pt font. The text is underlined.

    <example>
     <title>Simple ClibPDF Example</title>
     <programlisting>
&lt;?php
$cpdf = cpdf_open(0);
cpdf_page_init($cpdf, 1, 0, 595, 842);
cpdf_add_outline($cpdf, 0, 0, 0, 1, "Page 1");
cpdf_set_font($cpdf, "Times-Roman", 30, 4);
cpdf_set_text_rendering($cpdf, 1);
cpdf_text($cpdf, "Times Roman outlined", 50, 750);
cpdf_moveto($cpdf, 50, 740);
cpdf_lineto($cpdf, 330, 740);
cpdf_stroke($cpdf);
cpdf_finalize($cpdf);
Header("Content-type: application/pdf");
cpdf_output_buffer($cpdf);
cpdf_close($cpdf);
?>
    </programlisting>
  </example>

  <simpara>
  The pdflib distribution contains a more complex example which creates a
  series of pages with an analog clock. Here is that example converted
  into PHP using the ClibPDF extension:

  <example>
   <title>pdfclock example from pdflib 2.0 distribution</title>
   <programlisting>
&lt;?php
$radius = 200;
$margin = 20;
$pagecount = 40;

$pdf = cpdf_open(0);
cpdf_set_creator($pdf, "pdf_clock.php3");
cpdf_set_title($pdf, "Analog Clock");
  
while($pagecount-- > 0) {
  cpdf_page_init($pdf, $pagecount+1, 0, 2 * ($radius + $margin), 2 * ($radius + $margin), 1.0);
  
  cpdf_set_page_animation($pdf, 4, 0.5, 0, 0, 0);  /* wipe */
  
  cpdf_translate($pdf, $radius + $margin, $radius + $margin);
  cpdf_save($pdf);
  cpdf_setrgbcolor($pdf, 0.0, 0.0, 1.0);
  
  /* minute strokes */
  cpdf_setlinewidth($pdf, 2.0);
  for ($alpha = 0; $alpha < 360; $alpha += 6)
    {
    cpdf_rotate($pdf, 6.0);
    cpdf_moveto($pdf, $radius, 0.0);
    cpdf_lineto($pdf, $radius-$margin/3, 0.0);
    cpdf_stroke($pdf);
    }
  
  cpdf_restore($pdf);
  cpdf_save($pdf);
 
  /* 5 minute strokes */
  cpdf_setlinewidth($pdf, 3.0);
  for ($alpha = 0; $alpha < 360; $alpha += 30)
  {
    cpdf_rotate($pdf, 30.0);
    cpdf_moveto($pdf, $radius, 0.0);
    cpdf_lineto($pdf, $radius-$margin, 0.0);
    cpdf_stroke($pdf);
  }

  $ltime = getdate();

  /* draw hour hand */
  cpdf_save($pdf);
  cpdf_rotate($pdf, -(($ltime['minutes']/60.0) + $ltime['hours'] - 3.0) * 30.0);
  cpdf_moveto($pdf, -$radius/10, -$radius/20);
  cpdf_lineto($pdf, $radius/2, 0.0);
  cpdf_lineto($pdf, -$radius/10, $radius/20);
  cpdf_closepath($pdf);
  cpdf_fill($pdf);
  cpdf_restore($pdf);

  /* draw minute hand */
  cpdf_save($pdf);
  cpdf_rotate($pdf, -(($ltime['seconds']/60.0) + $ltime['minutes'] - 15.0) * 6.0);
  cpdf_moveto($pdf, -$radius/10, -$radius/20);
  cpdf_lineto($pdf, $radius * 0.8, 0.0);
  cpdf_lineto($pdf, -$radius/10, $radius/20);
  cpdf_closepath($pdf);
  cpdf_fill($pdf);
  cpdf_restore($pdf);

  /* draw second hand */
  cpdf_setrgbcolor($pdf, 1.0, 0.0, 0.0);
  cpdf_setlinewidth($pdf, 2);
  cpdf_save($pdf);
  cpdf_rotate($pdf, -(($ltime['seconds'] - 15.0) * 6.0));
  cpdf_moveto($pdf, -$radius/5, 0.0);
  cpdf_lineto($pdf, $radius, 0.0);
  cpdf_stroke($pdf);
  cpdf_restore($pdf);

  /* draw little circle at center */
  cpdf_circle($pdf, 0, 0, $radius/30);
  cpdf_fill($pdf);

  cpdf_restore($pdf);

  cpdf_finalize_page($pdf, $pagecount+1);
}

cpdf_finalize($pdf);
Header("Content-type: application/pdf");
cpdf_output_buffer($pdf);
cpdf_close($pdf);
?>
    </programlisting>
  </example>
  </partintro>

  <refentry id="function.cpdf-set-creator">
   <refnamediv>
    <refname>cpdf_set_creator</refname>
    <refpurpose>Sets the creator field in the pdf document</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_set_creator</function></funcdef>
     <paramdef>string <parameter>creator</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_set_creator</function> function sets the
     creator of a pdf document.

    <para>
     See also <function>cpdf_set_subject</function>,
              <function>cpdf_set_title</function>,
              <function>cpdf_set_keywords</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-set-title">
   <refnamediv>
    <refname>cpdf_set_title</refname>
    <refpurpose>Sets the title field of the pdf document</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_set_title</function></funcdef>
     <paramdef>string <parameter>title</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_set_title</function> function sets the
     title of a pdf document.

    <para>
     See also <function>cpdf_set_subject</function>,
              <function>cpdf_set_creator</function>,
              <function>cpdf_set_keywords</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-set-subject">
   <refnamediv>
    <refname>cpdf_set_subject</refname>
    <refpurpose>Sets the subject field of the pdf document</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_set_subject</function></funcdef>
     <paramdef>string <parameter>subject</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_set_subject</function> function sets the
     subject of a pdf document.

    <para>
     See also <function>cpdf_set_title</function>,
              <function>cpdf_set_creator</function>,
              <function>cpdf_set_keywords</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-set-keywords">
   <refnamediv>
    <refname>cpdf_set_keywords</refname>
    <refpurpose>Sets the keywords field of the pdf document</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_set_keywords</function></funcdef>
     <paramdef>string <parameter>keywords</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_set_keywords</function> function sets the
     keywords of a pdf document.

    <para>
     See also <function>cpdf_set_title</function>,
              <function>cpdf_set_creator</function>,
              <function>cpdf_set_subject</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-open">
   <refnamediv>
    <refname>cpdf_open</refname>
    <refpurpose>Opens a new pdf document</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>int <function>cpdf_open</function></funcdef>
     <paramdef>int <parameter>compression</parameter></paramdef>
     <paramdef>string <parameter>filename</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_open</function> function opens
     a new pdf document. The first parameter turns document compression
     on if it is unequal to 0. The second optional parameter sets the
     file in which the document is written. If it is omitted the document
     is created in memory and can either be written into a file with
     the <function>cpdf_save_to_file</function> or written to standard
     output with <function>cpdf_output_buffer</function>.

     <note><simpara>
       The return value will be needed in futher versions of ClibPDF as the 
       first parameter in all other functions which are writing to the pdf
       document.
      </simpara><simpara>
       The ClibPDF library takes the filename "-" as a synonym for stdout.
       If PHP is compiled as an apache module this will not work because the
       way ClibPDF outputs to stdout does not work with apache. You can solve
       this problem by skipping the filename and using
       <function>cpdf_output_buffer</function> to output the pdf document.
      </simpara></note>

    <para>
     See also <function>cpdf_close</function>,
              <function>cpdf_output_buffer</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-close">
   <refnamediv>
    <refname>cpdf_close</refname>
    <refpurpose>Closes the pdf document</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_close</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_close</function> function closes the pdf document.
     This should be the last function even after
     <function>cpdf_finalize</function>, <function>cpdf_output_buffer</function>
     and <function>cpdf_save_to_file</function>.

    <para>
     See also <function>cpdf_open</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-page-init">
   <refnamediv>
    <refname>cpdf_page_init</refname>
    <refpurpose>Starts new page</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_page_init</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>int <parameter>page number</parameter></paramdef>
     <paramdef>int <parameter>orientation</parameter></paramdef>
     <paramdef>double <parameter>height</parameter></paramdef>
     <paramdef>double <parameter>width</parameter></paramdef>
     <paramdef>double <parameter>unit</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_page_init</function> function starts a new
     page with height <parameter>height</parameter> and width
     <parameter>width</parameter>. The page has number
     <parameter>page number</parameter> and orientation
     <parameter>orientation</parameter>. <parameter>orientation</parameter>
     can be 0 for portrait and 1 for landscape. The last optional parameter
     <parameter>unit</parameter> sets the unit for the koordinate system.
     The value should be the number of postscript points per unit. Since
     one inch is equal to 72 points, a value of 72 would set the unit
     to one inch. The default is also 72.

    <para>
     See also <function>cpdf_set_current_page</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-finalize-page">
   <refnamediv>
    <refname>cpdf_finalize_page</refname>
    <refpurpose>Ends page</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_finalize_page</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>int <parameter>page number</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_finalize_page</function> function ends the page
     with page number <parameter>page number</parameter>.
     This function is only for saving memory. A finalized page takes
     less memory but cannot be modified anymore.

    <para>
     See also <function>cpdf_page_init</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-finalize">
   <refnamediv>
    <refname>cpdf_finalize</refname>
    <refpurpose>Ends document</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_finalize</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_finalize</function> function ends the document.
     You still have to call <function>cpdf_close</function>.

    <para>
     See also <function>cpdf_close</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-output-buffer">
   <refnamediv>
    <refname>cpdf_output_buffer</refname>
    <refpurpose>Outputs the pdf document in memory buffer</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_output_buffer</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_output_buffer</function> function outputs
     the pdf document to stdout. The document has to be created in memory which
     is the case if <function>cpdf_open</function> has been called with
     no filename parameter.
     
    <para>
     See also <function>cpdf_open</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-save-to-file">
   <refnamediv>
    <refname>cpdf_save_to_file</refname>
    <refpurpose>Writes the pdf document into a file</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_save_to_file</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>string <parameter>filename</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_save_to_file</function> function outputs
     the pdf document into a file if it has been created in memory.
     This function is not needed if the pdf document has been open
     by specifying a filename as a parameter of <function>cpdf_open</function>.
     
    <para>
     See also <function>cpdf_output_buffer</function>,
              <function>cpdf_open</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-set-current-page">
   <refnamediv>
    <refname>cpdf_set_current_page</refname>
    <refpurpose>Sets current page</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_set_current_page</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>int <parameter>page number</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_set_current_page</function> function set the page
     on which all operations are performed. One can switch between pages
     until a page is finished with <function>cpdf_finalize_page</function>.

    <para>
     See also <function>cpdf_finalize_page</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-begin-text">
   <refnamediv>
    <refname>cpdf_begin_text</refname>
    <refpurpose>Starts text section</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_begin_text</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_begin_text</function> function starts a text
     section. It must be ended with <function>cpdf_end_text</function>.

     <example>
      <title>Text output</title>
      <programlisting>
&lt;?php cpdf_begin_text($pdf);
cpdf_set_font($pdf, 16, "Helvetica", 4);
cpdf_text($pdf, 100, 100, "Some text");
cpdf_end_text($pdf) ?>
</programlisting></example>

    <para>
     See also <function>cpdf_end_text</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-end-text">
   <refnamediv>
    <refname>cpdf_end_text</refname>
    <refpurpose>Starts text section</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_end_text</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_end_text</function> function ends a text
     section which was started with <function>cpdf_begin_text</function>.

     <example>
      <title>Text output</title>
      <programlisting>
&lt;?php cpdf_begin_text($pdf);
cpdf_set_font($pdf, 16, "Helvetica", 4);
cpdf_text($pdf, 100, 100, "Some text");
cpdf_end_text($pdf) ?>
</programlisting></example>

    <para>
     See also <function>cpdf_begin_text</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-show">
   <refnamediv>
    <refname>cpdf_show</refname>
    <refpurpose>Output text at current position</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_show</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>string <parameter>text</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_show</function> function outputs the
     string in <parameter>text</parameter> at the current position.

    <para>
     See also <function>cpdf_text</function>,
              <function>cpdf_begin_text</function>,
              <function>cpdf_end_text</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-show-xy">
   <refnamediv>
    <refname>cpdf_show_xy</refname>
    <refpurpose>Output text at position</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_show_xy</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>string <parameter>text</parameter></paramdef>
     <paramdef>double <parameter>x-koor</parameter></paramdef>
     <paramdef>double <parameter>y-koor</parameter></paramdef>
     <paramdef>int <parameter>mode</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_show_xy</function> function outputs the
     string <parameter>text</parameter> at position with
     coordinates (<parameter>x-koor</parameter>, <parameter>y-koor</parameter>).
     The last optional parameter determines the unit length. If is 0 or omitted
     the default unit as specified for the page is used. Otherwise the koodinates
     are measured in postscript points disregarding the current unit.

    <note>
     <simpara>The function <function>cpdf_show_xy</function> is identical
     to <function>cpdf_text</function> without the optional parameters.</simpara></note>

    <para>
     See also <function>cpdf_text</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-text">
   <refnamediv>
    <refname>cpdf_text</refname>
    <refpurpose>Output text with parameters</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_text</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>string <parameter>text</parameter></paramdef>
     <paramdef>double <parameter>x-koor</parameter></paramdef>
     <paramdef>double <parameter>y-koor</parameter></paramdef>
     <paramdef>int <parameter>mode</parameter></paramdef>
     <paramdef>double <parameter>orientation</parameter></paramdef>
     <paramdef>int <parameter>alignmode</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_text</function> function outputs the
     string <parameter>text</parameter> at position with
     coordinates (<parameter>x-koor</parameter>, <parameter>y-koor</parameter>).
     The optional parameter determines the unit length. If is 0 or omitted
     the default unit as specified for the page is used.
     Otherwise the koodinates
     are measured in postscript points disregarding the current unit.
     The optional parameter <parameter>orientation</parameter> is the rotation
     of the text in degree. The optional parameter
     <parameter>alignmode</parameter> determines how the text is align.
     See the ClibPDF documentation for possible values.

    <para>
     See also <function>cpdf_show_xy</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-set-font">
   <refnamediv>
    <refname>cpdf_set_font</refname>
    <refpurpose>Select the current font face and size</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_set_font</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>string <parameter>font name</parameter></paramdef>
     <paramdef>double <parameter>size</parameter></paramdef>
     <paramdef>int <parameter>encoding</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_set_font</function> function sets the the
     current font face, font size and encoding. Currently only
     the standard postscript fonts are supported.
     The last parameter
     <parameter>encoding</parameter> can take the following values:
     2 = macroman, 3 = macexpert, 4 = winansi.
     Any other value selects the font's buildin encoding.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-set-leading">
   <refnamediv>
    <refname>cpdf_set_leading</refname>
    <refpurpose>Sets distance between text lines</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_set leading</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>double <parameter>distance</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_set_leading</function> function sets the distance
     between text lines. This will be used if text is output by
     <function>cpdf_continue_text</function>.

    <para>
     See also <function>cpdf_continue_text</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-set-text-rendering">
   <refnamediv>
    <refname>cpdf_set_text_rendering</refname>
    <refpurpose>Determines how text is rendered</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_set_text_rendering</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>int <parameter>mode</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_set_text_rendering</function> function determines
     how text is rendered. The possible values for <parameter>mode</parameter>
     are 0=fill text, 1=stroke text, 2=fill and stroke text, 3=invisible,
     4=fill text and add it to cliping path, 5=stroke text and add it to
     clipping path, 6=fill and stroke text and add
     it to cliping path, 7=add it to clipping path.
   </refsect1>
  </refentry>

  <refentry id="function.cpdf-set-horiz-scaling">
   <refnamediv>
    <refname>cpdf_set_horiz_scaling</refname>
    <refpurpose>Sets horizontal scaling of text</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_set_horiz_scaling</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>double <parameter>scale</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_set_horiz_scaling</function> function sets the
     horizontal scaling to <parameter>scale</parameter> percent.
   </refsect1>
  </refentry>

  <refentry id="function.cpdf-set-text-rise">
   <refnamediv>
    <refname>cpdf_set_text_rise</refname>
    <refpurpose>Sets the text rise</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_set_text_rise</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>double <parameter>value</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_set_text_rise</function> function sets the
     text rising to <parameter>value</parameter> units.
   </refsect1>
  </refentry>

  <refentry id="function.cpdf-set-text-matrix">
   <refnamediv>
    <refname>cpdf_set_text_matrix</refname>
    <refpurpose>Sets the text matrix</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_set_text_matrix</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>array <parameter>matrix</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_set_text_matrix</function> function sets
     a matrix which describes a transformation applied on the current
     text font.
   </refsect1>
  </refentry>

  <refentry id="function.cpdf-set-text-pos">
   <refnamediv>
    <refname>cpdf_set_text_pos</refname>
    <refpurpose>Sets text position</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_set_text_pos</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>double <parameter>x-koor</parameter></paramdef>
     <paramdef>double <parameter>y-koor</parameter></paramdef>
     <paramdef>int <parameter>mode</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_set_text_pos</function> function sets the
     position of text for the next <function>cpdf_show</function> 
     function call.

    <para>
     The last optional parameter <parameter>mode</parameter> determines
     the unit length. If is 0 or omitted the default unit as specified
     for the page is used. Otherwise the koodinates
     are measured in postscript points disregarding the current unit.

    <para>
     See also <function>cpdf_show</function>,
              <function>cpdf_text</function>.
   </refsect1>
  </refentry>

  <refentry id="function.cpdf-set-char-spacing">
   <refnamediv>
    <refname>cpdf_set_char_spacing</refname>
    <refpurpose>Sets character spacing</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_set_char_spacing</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>double <parameter>space</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_set_char_spacing</function> function sets the
     spacing between characters.
    <para>
     See also <function>cpdf_set_word_spacing</function>,
              <function>cpdf_set_leading</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-set-word-spacing">
   <refnamediv>
    <refname>cpdf_set_word_spacing</refname>
    <refpurpose>Sets spacing between words</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_set_word_spacing</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>double <parameter>space</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_set_word_spacing</function> function sets the
     spacing between words.

    <para>
     See also <function>cpdf_set_char_spacing</function>,
              <function>cpdf_set_leading</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-continue-text">
   <refnamediv>
    <refname>cpdf_continue_text</refname>
    <refpurpose>Output text in next line</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_continue_text</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>string <parameter>text</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_continue_text</function> function outputs the
     string in <parameter>text</parameter> in the next line.

    <para>
     See also <function>cpdf_show_xy</function>,
              <function>cpdf_text</function>,
              <function>cpdf_set_leading</function>,
              <function>cpdf_set_text_pos</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-stringwidth">
   <refnamediv>
    <refname>cpdf_stringwidth</refname>
    <refpurpose>Returns width of text in current font</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>double <function>cpdf_stringwidth</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>string <parameter>text</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_stringwidth</function> function returns the
     width of the string in <parameter>text</parameter>. It requires
     a font to be set before.

    <para>
     See also <function>cpdf_set_font</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-save">
   <refnamediv>
    <refname>cpdf_save</refname>
    <refpurpose>Saves current enviroment</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_save</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_save</function> function saves the current
     enviroment. It works like the postscript command gsave. Very
     useful if you want to translate or rotate an object without effecting
     other objects.

    <para>
     See also <function>cpdf_restore</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-restore">
   <refnamediv>
    <refname>cpdf_restore</refname>
    <refpurpose>Restores formerly saved enviroment</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_restore</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_restore</function> function restores the
     enviroment saved with <function>cpdf_save</function>. It works
     like the postscript command grestore. Very
     useful if you want to translate or rotate an object without effecting
     other objects.

     <example>
      <title>Save/Restore</title>
      <programlisting>
&lt;?php cpdf_save($pdf);
// do all kinds of rotations, transformations, ...
cpdf_restore($pdf) ?>
</programlisting></example>

    <para>
     See also <function>cpdf_save</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-translate">
   <refnamediv>
    <refname>cpdf_translate</refname>
    <refpurpose>Sets origin of coordinate system</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_translate</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>double <parameter>x-koor</parameter></paramdef>
     <paramdef>double <parameter>y-koor</parameter></paramdef>
     <paramdef>int <parameter>mode</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_translate</function> function set the origin of
     coordinate system to the point (<parameter>x-koor</parameter>,
     <parameter>y-koor</parameter>).

    <para>
     The last optional parameter determines the unit length. If is 0 or omitted
     the default unit as specified for the page is used. Otherwise the koodinates
     are measured in postscript points disregarding the current unit.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-scale">
   <refnamediv>
    <refname>cpdf_scale</refname>
    <refpurpose>Sets scaling</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_scale</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>double <parameter>x-scale</parameter></paramdef>
     <paramdef>double <parameter>y-scale</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_scale</function> function set the scaling factor
     in both directions.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-rotate">
   <refnamediv>
    <refname>cpdf_rotate</refname>
    <refpurpose>Sets rotation</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_rotate</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>double <parameter>angle</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_rotate</function> function set the rotation in
     degress to <parameter>angle</parameter>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-setflat">
   <refnamediv>
    <refname>cpdf_setflat</refname>
    <refpurpose>Sets flatness</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_setflat</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>double <parameter>value</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_setflat</function> function set the flatness to
     a value between 0 and 100.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-setlinejoin">
   <refnamediv>
    <refname>cpdf_setlinejoin</refname>
    <refpurpose>Sets linejoin parameter</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_setlinejoin</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>long <parameter>value</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_setlinejoin</function> function set the linejoin
     parameter between a value of 0 and 2. 0 = miter, 1 = round, 2 = bevel.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-setlinecap">
   <refnamediv>
    <refname>cpdf_setlinecap</refname>
    <refpurpose>Sets linecap aparameter</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_setlinecap</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>int <parameter>value</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_setlinecap</function> function set the linecap
     parameter between a value of 0 and 2. 0 = butt end, 1 = round,
     2 = projecting square.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-setmiterlimit">
   <refnamediv>
    <refname>cpdf_setmiterlimit</refname>
    <refpurpose>Sets miter limit</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_setmiterlimit</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>double <parameter>value</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_setmiterlimit</function> function set the miter limit
     to a value greater or equal than 1.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-setlinewidth">
   <refnamediv>
    <refname>cpdf_setlinewidth</refname>
    <refpurpose>Sets line width</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_setlinewidth</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>double <parameter>width</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_setlinewidth</function> function set the line width
     to <parameter>width</parameter>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-setdash">
   <refnamediv>
    <refname>cpdf_setdash</refname>
    <refpurpose>Sets dash pattern</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_setdash</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>double <parameter>white</parameter></paramdef>
     <paramdef>double <parameter>black</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_setdash</function> function set the dash pattern
     <parameter>white</parameter> white units and <parameter>black</parameter>
     black units. If both are 0 a solid line is set.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-moveto">
   <refnamediv>
    <refname>cpdf_moveto</refname>
    <refpurpose>Sets current point</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_moveto</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>double <parameter>x-koor</parameter></paramdef>
     <paramdef>double <parameter>y-koor</parameter></paramdef>
     <paramdef>int <parameter>mode</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_moveto</function> function set the current point
     to the coordinates <parameter>x-koor</parameter> and
     <parameter>y-koor</parameter>.

    <para>
     The last optional parameter determines the unit length. If is 0 or omitted
     the default unit as specified for the page is used. Otherwise the koodinates
     are measured in postscript points disregarding the current unit.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-rmoveto">
   <refnamediv>
    <refname>cpdf_rmoveto</refname>
    <refpurpose>Sets current point</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_rmoveto</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>double <parameter>x-koor</parameter></paramdef>
     <paramdef>double <parameter>y-koor</parameter></paramdef>
     <paramdef>int <parameter>mode</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_rmoveto</function> function set the current point
     relative to the coordinates <parameter>x-koor</parameter> and
     <parameter>y-koor</parameter>.

    <para>
     The last optional parameter determines the unit length. If is 0 or omitted
     the default unit as specified for the page is used. Otherwise the koodinates
     are measured in postscript points disregarding the current unit.

    <para>
     See also <function>cpdf_moveto</function>.
   </refsect1>
  </refentry>

  <refentry id="function.cpdf-curveto">
   <refnamediv>
    <refname>cpdf_curveto</refname>
    <refpurpose>Draws a curve</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_curveto</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>double <parameter>x1</parameter></paramdef>
     <paramdef>double <parameter>y1</parameter></paramdef>
     <paramdef>double <parameter>x2</parameter></paramdef>
     <paramdef>double <parameter>y2</parameter></paramdef>
     <paramdef>double <parameter>x3</parameter></paramdef>
     <paramdef>double <parameter>y3</parameter></paramdef>
     <paramdef>int <parameter>mode</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_curveto</function> function draws a Bezier curve
     from the current point to the point
     (<parameter>x3</parameter>, <parameter>y3</parameter>) using
     (<parameter>x1</parameter>, <parameter>y1</parameter>) and
     (<parameter>x2</parameter>, <parameter>y2</parameter>) as control
     points.

    <para>
     The last optional parameter determines the unit length. If is 0 or omitted
     the default unit as specified for the page is used. Otherwise the koodinates
     are measured in postscript points disregarding the current unit.

    <para>
     See also <function>cpdf_moveto</function>,
              <function>cpdf_rmoveto</function>,
              <function>cpdf_rlineto</function>,
              <function>cpdf_lineto</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-lineto">
   <refnamediv>
    <refname>cpdf_lineto</refname>
    <refpurpose>Draws a line</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_lineto</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>double <parameter>x-koor</parameter></paramdef>
     <paramdef>double <parameter>y-koor</parameter></paramdef>
     <paramdef>int <parameter>mode</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_lineto</function> function draws a line from
     the current point to the point with coordinates
     (<parameter>x-koor</parameter>, <parameter>y-koor</parameter>).

    <para>
     The last optional parameter determines the unit length. If is 0 or omitted
     the default unit as specified for the page is used. Otherwise the koodinates
     are measured in postscript points disregarding the current unit.

    <para>
     See also <function>cpdf_moveto</function>,
              <function>cpdf_rmoveto</function>,
              <function>cpdf_curveto</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-rlineto">
   <refnamediv>
    <refname>cpdf_rlineto</refname>
    <refpurpose>Draws a line</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_rlineto</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>double <parameter>x-koor</parameter></paramdef>
     <paramdef>double <parameter>y-koor</parameter></paramdef>
     <paramdef>int <parameter>mode</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_rlineto</function> function draws a line from
     the current point to the relative point with coordinates
     (<parameter>x-koor</parameter>, <parameter>y-koor</parameter>).

    <para>
     The last optional parameter determines the unit length. If is 0 or omitted
     the default unit as specified for the page is used. Otherwise the koodinates
     are measured in postscript points disregarding the current unit.

    <para>
     See also <function>cpdf_moveto</function>,
              <function>cpdf_rmoveto</function>,
              <function>cpdf_curveto</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-circle">
   <refnamediv>
    <refname>cpdf_circle</refname>
    <refpurpose>Draw a circle</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_circle</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>double <parameter>x-koor</parameter></paramdef>
     <paramdef>double <parameter>y-koor</parameter></paramdef>
     <paramdef>double <parameter>radius</parameter></paramdef>
     <paramdef>int <parameter>mode</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_circle</function> function draws a circle with
     center at point 
     (<parameter>x-koor</parameter>, <parameter>y-koor</parameter>)
     and radius <parameter>radius</parameter>.

    <para>
     The last optional parameter determines the unit length. If is 0 or omitted
     the default unit as specified for the page is used. Otherwise the koodinates
     are measured in postscript points disregarding the current unit.

    <para>
     See also <function>cpdf_arc</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-arc">
   <refnamediv>
    <refname>cpdf_arc</refname>
    <refpurpose>Draws an arc</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_arc</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>double <parameter>x-koor</parameter></paramdef>
     <paramdef>double <parameter>y-koor</parameter></paramdef>
     <paramdef>double <parameter>radius</parameter></paramdef>
     <paramdef>double <parameter>start</parameter></paramdef>
     <paramdef>double <parameter>end</parameter></paramdef>
     <paramdef>int <parameter>mode</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_arc</function> function draws an arc with
     center at point 
     (<parameter>x-koor</parameter>, <parameter>y-koor</parameter>)
     and radius <parameter>radius</parameter>, starting at angle
     <parameter>start</parameter> and ending at angle
     <parameter>end</parameter>.

    <para>
     The last optional parameter determines the unit length. If is 0 or omitted
     the default unit as specified for the page is used. Otherwise the koodinates
     are measured in postscript points disregarding the current unit.

    <para>
     See also <function>cpdf_circle</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-rect">
   <refnamediv>
    <refname>cpdf_rect</refname>
    <refpurpose>Draw a rectangle</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_rect</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>double <parameter>x-koor</parameter></paramdef>
     <paramdef>double <parameter>y-koor</parameter></paramdef>
     <paramdef>double <parameter>width</parameter></paramdef>
     <paramdef>double <parameter>height</parameter></paramdef>
     <paramdef>int <parameter>mode</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_rect</function> function draws a rectangle with
     its lower left corner at point 
     (<parameter>x-koor</parameter>, <parameter>y-koor</parameter>).
     This width is set to <parameter>widgth</parameter>.
     This height is set to <parameter>height</parameter>.

    <para>
     The last optional parameter determines the unit length. If is 0 or omitted
     the default unit as specified for the page is used. Otherwise the koodinates
     are measured in postscript points disregarding the current unit.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-closepath">
   <refnamediv>
    <refname>cpdf_closepath</refname>
    <refpurpose>Close path</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_closepath</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_closepath</function> function closes the
     current path.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-stroke">
   <refnamediv>
    <refname>cpdf_stroke</refname>
    <refpurpose>Draw line along path</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_stroke</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_stroke</function> function draws a line along
     current path.

    <para>
     See also <function>cpdf_closepath</function>,
              <function>cpdf_closepath_stroke</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-closepath-stroke">
   <refnamediv>
    <refname>cpdf_closepath_stroke</refname>
    <refpurpose>Close path and draw line along path</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_closepath_stroke</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_closepath_stroke</function> function is a
     combination of <function>cpdf_closepath</function> and
     <function>cpdf_stroke</function>. Than clears the path.

    <para>
     See also <function>cpdf_closepath</function>,
              <function>cpdf_stroke</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-fill">
   <refnamediv>
    <refname>cpdf_fill</refname>
    <refpurpose>Fill current path</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_fill</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_fill</function> function fills the interior of
     the current path with the current fill color.

    <para>
     See also <function>cpdf_closepath</function>,
              <function>cpdf_stroke</function>,
              <function>cpdf_setgray_fill</function>,
              <function>cpdf_setgray</function>,
              <function>cpdf_setrgbcolor_fill</function>,
              <function>cpdf_setrgbcolor</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-fill-stroke">
   <refnamediv>
    <refname>cpdf_fill_stroke</refname>
    <refpurpose>Fill and stroke current path</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_fill_stroke</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_fill_stroke</function> function fills the interior of
     the current path with the current fill color and draws current path.

    <para>
     See also <function>cpdf_closepath</function>,
              <function>cpdf_stroke</function>,
              <function>cpdf_fill</function>,
              <function>cpdf_setgray_fill</function>,
              <function>cpdf_setgray</function>,
              <function>cpdf_setrgbcolor_fill</function>,
              <function>cpdf_setrgbcolor</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-closepath-fill-stroke">
   <refnamediv>
    <refname>cpdf_closepath_fill_stroke</refname>
    <refpurpose>Close, fill and stroke current path</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_closepath_fill_stroke</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_closepath_fill_stroke</function> function closes,
     fills the interior of
     the current path with the current fill color and draws current path.

    <para>
     See also <function>cpdf_closepath</function>,
              <function>cpdf_stroke</function>,
              <function>cpdf_fill</function>,
              <function>cpdf_setgray_fill</function>,
              <function>cpdf_setgray</function>,
              <function>cpdf_setrgbcolor_fill</function>,
              <function>cpdf_setrgbcolor</function>.

   </refsect1>
  </refentry>

  <refentry id="function.cpdf-clip">
   <refnamediv>
    <refname>cpdf_clip</refname>
    <refpurpose>Clips to current path</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_clip</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_clip</function> function clips all drawing
     to the current path.

   </refsect1>
  </refentry>
  
  <refentry id="function.cpdf-setgray-fill">
   <refnamediv>
    <refname>cpdf_setgray_fill</refname>
    <refpurpose>Sets filling color to gray value</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_setgray_fill</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>double <parameter>value</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_setgray_fill</function> function sets the current
     gray value to fill a path.

    <para>
     See also <function>cpdf_setrgbcolor_fill</function>.

   </refsect1>
  </refentry>
  
  <refentry id="function.cpdf-setgray-stroke">
   <refnamediv>
    <refname>cpdf_setgray_stroke</refname>
    <refpurpose>Sets drawing color to gray value</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_setgray_stroke</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>double <parameter>gray value</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_setgray_stroke</function> function sets the current
     drawing color to the given gray value.

    <para>
     See also <function>cpdf_setrgbcolor_stroke</function>.

   </refsect1>
  </refentry>
  
  <refentry id="function.cpdf-setgray">
   <refnamediv>
    <refname>cpdf_setgray</refname>
    <refpurpose>Sets drawing and filling color to gray value</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_setgray</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>double <parameter>gray value</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_setgray_stroke</function> function sets the current
     drawing and filling color to the given gray value.

    <para>
     See also <function>cpdf_setrgbcolor_stroke</function>,
              <function>cpdf_setrgbcolor_fill</function>.

   </refsect1>
  </refentry>
  
  <refentry id="function.cpdf-setrgbcolor-fill">
   <refnamediv>
    <refname>cpdf_setrgbcolor_fill</refname>
    <refpurpose>Sets filling color to rgb color value</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_setrgbcolor_fill</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>double <parameter>red value</parameter></paramdef>
     <paramdef>double <parameter>green value</parameter></paramdef>
     <paramdef>double <parameter>blue value</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_setrgbcolor_fill</function> function sets the current
     rgb color value to fill a path.

    <para>
     See also <function>cpdf_setrgbcolor_stroke</function>,
              <function>cpdf_setrgbcolor</function>.

   </refsect1>
  </refentry>
  
  <refentry id="function.cpdf-setrgbcolor-stroke">
   <refnamediv>
    <refname>cpdf_setrgbcolor_stroke</refname>
    <refpurpose>Sets drawing color to rgb color value</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_setrgbcolor_stroke</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>double <parameter>red value</parameter></paramdef>
     <paramdef>double <parameter>green value</parameter></paramdef>
     <paramdef>double <parameter>blue value</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_setrgbcolor_stroke</function> function sets the current
     drawing color to the given rgb color value.

    <para>
     See also <function>cpdf_setrgbcolor_fill</function>,
              <function>cpdf_setrgbcolor</function>.

   </refsect1>
  </refentry>
  
  <refentry id="function.cpdf-setrgbcolor">
   <refnamediv>
    <refname>cpdf_setrgbcolor</refname>
    <refpurpose>Sets drawing and filling color to rgb color value</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_setrgbcolor</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>double <parameter>red value</parameter></paramdef>
     <paramdef>double <parameter>green value</parameter></paramdef>
     <paramdef>double <parameter>blue value</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_setrgbcolor_stroke</function> function sets the current
     drawing and filling color to the given rgb color value.

    <para>
     See also <function>cpdf_setrgbcolor_stroke</function>,
              <function>cpdf_setrgbcolor_fill</function>.

   </refsect1>
  </refentry>
  
  <refentry id="function.cpdf-add-outline">
   <refnamediv>
    <refname>cpdf_add_outline</refname>
    <refpurpose>Adds bookmark for current page</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_add_outline</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>string <parameter>text</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_add_outline</function> function adds a bookmark
     with text <parameter>text</parameter> that points to the current page.

     <example>
      <title>Adding a page outline</title>
      <programlisting>
&lt;?php
$cpdf = cpdf_open(0);
cpdf_page_init($cpdf, 1, 0, 595, 842);
cpdf_add_outline($cpdf, 0, 0, 0, 1, "Page 1");
// ...
// some drawing
// ...
cpdf_finalize($cpdf);
Header("Content-type: application/pdf");
cpdf_output_buffer($cpdf);
cpdf_close($cpdf);
?>
    </programlisting>
    <para>
  </example>
   </refsect1>
  </refentry>

  <refentry id="function.cpdf-set-page-animation">
   <refnamediv>
    <refname>cpdf_set_page_animation</refname>
    <refpurpose>Sets duration between pages</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_set_page_animation</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>int <parameter>transition</parameter></paramdef>
     <paramdef>double <parameter>duration</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_set_page_animation</function> function set the
     transition between following pages.

    <para>
     The value of <parameter>transition</parameter>
     can be
     <simplelist>
      <member>
       0 for none,
      </member>
      <member>
       1 for two lines sweeping across the screen reveal the page,
      </member>
      <member>
       2 for multiple lines sweeping across the screen reveal the page,
      </member>
      <member>
       3 for a box reveals the page,
      </member>
      <member>
       4 for a single line sweeping across the screen reveals the page,
      </member>
      <member>
       5 for the old page dissolves to reveal the page,
      </member>
      <member>
       6 for the dissolve effect moves from one screen edge to another,
      </member>
      <member>
       7 for the old page is simply replaced by the new page (default)
      </member>
     </simplelist>

    <para>
     The value of <parameter>duration</parameter> is the number of seconds
     between page flipping.
   </refsect1>
  </refentry>

  <refentry id="function.cpdf-import-jpeg">
   <refnamediv>
    <refname>cpdf_import_jpeg</refname>
    <refpurpose>Opens a JPEG image</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>int <function>cpdf_open_jpeg</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>string <parameter>file name</parameter></paramdef>
     <paramdef>double <parameter>x-koor</parameter></paramdef>
     <paramdef>double <parameter>y-koor</parameter></paramdef>
     <paramdef>double <parameter>angle</parameter></paramdef>
     <paramdef>double <parameter>width</parameter></paramdef>
     <paramdef>double <parameter>height</parameter></paramdef>
     <paramdef>double <parameter>x-scale</parameter></paramdef>
     <paramdef>double <parameter>y-scale</parameter></paramdef>
     <paramdef>int <parameter>mode</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_import_jpeg</function> function opens an image stored
     in the file with the name <parameter>file name</parameter>.
     The format of the image has to be jpeg. The image is placed on the current
     page at position (<parameter>x-koor</parameter>, <parameter>y-koor</parameter>).
     The image is rotated by <parameter>angle</parameter> degres.
    <para>
     The last optional parameter determines the unit length. If is 0 or omitted
     the default unit as specified for the page is used. Otherwise the koodinates
     are measured in postscript points disregarding the current unit.

    <para>
     See also <function>cpdf_place_inline_image</function>,
   </refsect1>
  </refentry>

  <refentry id="function.cpdf-place-inline-image">
   <refnamediv>
    <refname>cpdf_place_inline_image</refname>
    <refpurpose>Places an image on the page</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_place_inline_image</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>int <parameter>image</parameter></paramdef>
     <paramdef>double <parameter>x-koor</parameter></paramdef>
     <paramdef>double <parameter>y-koor</parameter></paramdef>
     <paramdef>double <parameter>angle</parameter></paramdef>
     <paramdef>double <parameter>width</parameter></paramdef>
     <paramdef>double <parameter>height</parameter></paramdef>
     <paramdef>int <parameter>mode</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_place_inline_image</function> function places an image
     created with the php image functions on the page at postion
     (<parameter>x-koor</parameter>,
     <parameter>y-koor</parameter>). The image can be scaled at the same
     time.
    <para>
     The last optional parameter determines the unit length. If is 0 or omitted
     the default unit as specified for the page is used. Otherwise the koodinates
     are measured in postscript points disregarding the current unit.

    <para>
     See also <function>cpdf_import_jpeg</function>,
   </refsect1>
  </refentry>

  <refentry id="function.cpdf-add-annotation">
   <refnamediv>
    <refname>cpdf_add_annotation</refname>
    <refpurpose>Adds annotation</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
    <funcsynopsis>
     <funcdef>void <function>cpdf_add_annotation</function></funcdef>
     <paramdef>int <parameter>pdf document</parameter></paramdef>
     <paramdef>double <parameter>llx</parameter></paramdef>
     <paramdef>double <parameter>lly</parameter></paramdef>
     <paramdef>double <parameter>urx</parameter></paramdef>
     <paramdef>double <parameter>ury</parameter></paramdef>
     <paramdef>string <parameter>title</parameter></paramdef>
     <paramdef>string <parameter>content</parameter></paramdef>
     <paramdef>int <parameter>mode</parameter></paramdef>
    </funcsynopsis>
    <para>
     The <function>cpdf_add_annotation</function> adds a note with
     the lower left corner at (<parameter>llx</parameter>,
     <parameter>lly</parameter>) and the upper right corner at
     (<parameter>urx</parameter>, <parameter>ury</parameter>).

    <para>
     The last optional parameter determines the unit length. If is 0 or omitted
     the default unit as specified for the page is used. Otherwise the koodinates
     are measured in postscript points disregarding the current unit.
   </refsect1>
  </refentry>

 </reference>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->