Home
PHP
Application
Php Manual
Pictures
GuestBook
 
 
  Introduction Dlog Aprint SpTpl 
  Yap Xml2Array

 

 

 
 
 
Ex. index Quick Start Basic ex.
1st report Database Columns
Pdf output Pdf report Tag function
   

Pdf example.

This example shows how to built the report as PDF file, to retrieve the data from the global array and to use the columnset feature to align each column.

The PHP script

<?php
/*
* test 20: pdf and columnset
*
* It show how to build a report about the product sold over two year
*/


require_once(
'../sptpl.php');
require_once(
'../sptpl.inc');


$t=new sptpl();
$t->LoadTemplate('test20.xml');

// test data
$ProdArray=array( array('year' => '2002',
                      
'period' => 'Q1',
                      
'prodA' => 10,
                      
'prodB' => 5),
                array(
'year' => '2002',
                      
'period' => 'Q2',
                      
'prodA' => 20,
                      
'prodB' => 9),
                array(
'year' => '2002',
                      
'period' => 'Q3',
                      
'prodA' => 30,
                      
'prodB' => 3),
                array(
'year' => '2002',
                      
'period' => 'Q4',
                      
'prodA' => 14,
                      
'prodB' => 5),
                array(
'year' => '2003',
                      
'period' => 'Q1',
                      
'prodA' => 12,
                      
'prodB' => 9),
                array(
'year' => '2003',
                      
'period' => 'Q2',
                      
'prodA' => 27,
                      
'prodB' => 8),
              );
$GLOBALS['ProdArray']=$ProdArray;
$t->SetVar("RepTitle","Product sold");
$t->run("test20.pdf");
?>

Second step, write the configuration file test20.xml

<?xml version='1.0' encoding='iso-8859-1' ?>

<template>

<!-- enable the Pdf output -->
<pagemanager>CPagePdf</pagemanager>

<!-- Notice, the font face is the font filename -->
<font id='title' face='Helvetica.afm' size='20' bold='y'/>
<font id='description' face='Courier.afm' size='14' />
<font id='tableHeader' face='Courier.afm' size='14' bold='y'/>
<font id='datum' face='Helvetica.afm' size='12'/>
<report>
  <!-- page size A5 -->
  <pagesize>
   <pageformat>A5</pageformat> <!-- only CPagePdf -->
  </pagesize>
  
  <!-- set a new columnset -->
  <columnset id='test1'>
   <column  leftpos='80' Width='100' align='left' />
   <column  leftpos='170' Width='70' align='left' />
   <column  leftpos='240' Width='70' align='left' />
  </columnset>

  <!-- Start the report contents, the title -->
  <beginreport fontid='title' align='center'>
   {$RepTitle}
  </beginreport>

  <row  fontid='description' vpos='relative' rowpos='20'>
  Product sold over two year
  </row>

  <block id='Sold' columnset='test1'>
   <!-- data from the GLOBAL array ProdArray -->
   <datasource>
    <varname>ProdArray</varname>
   </datasource>

   <counter name='TotalA' field='$prodA' />
   <counter name='TotalB' field='$prodB' />
   <counter name='NoItems' autoincrement='y' />

   <!-- one table each year -->
   <group key='year' level='1' name='YearGrouping'>
      <row vpos='relative' rowpos='20' column='1'>Year: {$year}</row>
      <row  />
      <counter name='TotalYearA' field='$prodA' />
      <counter name='TotalYearB' field='$prodB' />
      <counter name='NoRows' autoincrement='y' />
   </group>

   <body>
    <!-- table header -->
    <header fontid='tableHeader' column='1' vpos='relative' rowpos='20'>Period</header>
    <header fontid='tableHeader' column='2'>ProdA</header>
    <header fontid='tableHeader' column='3'>ProdB</header>
    <header fontid='tableHeader' column='1'>-------</header>
    <header fontid='tableHeader' column='2'>-----</header>
    <header fontid='tableHeader' column='3'>-----</header>
    
    <!-- table contents -->
    <row column='1'>{$period}</row>
    <row column='2'>{$prodA}</row>
    <row column='3'>{$prodB}</row>
   </body>

   <!-- totals for each year -->
   <endgroup name='YearGrouping'>
      <row column='1'>---------</row>
      <row column='2'>-------</row>
      <row column='3'>-------</row>
      <row column='1'>Total</row>
      <row column='2'>{$TotalYearA}</row>
      <row column='3'>{$TotalYearB}</row>
      <row column='1' vpos='relative' rowpos='20'>N.Rows:   {$NoRows}</row>
   </endgroup>
  </block>

  <row vpos='relative' rowpos='40' />
  <closereport>
Product A sold: {$TotalA}
Product B sold: {$TotalB}
Total Items:    {$NoItems}
  </closereport>
  <closepage>
   Sales Dep. - 10/02/2004
  </closepage>
</report>


</template>

And here you may see the output

 

Copyright © 2003-2008 Darvin Andrioli, last change 31/07/2006