Per lavoro ho visto un pò di tutto.
Diciamo che ormai i server blade sono un ottimo compromesso.
Per la marca, come qualità prezzo gli HP sono i migliori, gli IBM i più sicuri (ma costano davvero tanto).
IMHO!
Per lavoro ho visto un pò di tutto.
Diciamo che ormai i server blade sono un ottimo compromesso.
Per la marca, come qualità prezzo gli HP sono i migliori, gli IBM i più sicuri (ma costano davvero tanto).
IMHO!
La gestione dei documenti è da sempre un problema per le PMI e Pubblica Amministrazione.
Grazie alla firma digitale ed all'archiviazione ottica sostitutiva è possibile dare valore legale ai files.
La Digital 2B (di cui presento il sito) è una società che fornisce un DMS, un sistema di gestione documentale che, grazie alla firma digitale, è in grado di fornire valore aggiunto al proprio servizio.
Ecco il link: [www.digital2b.com
Come fai a capire quando finisce una pagina per inserire i subtotali?
Ho dato un'occhiata al file readme.pdf della classe ma non trovo niente in merito: non si riesce a capire quando la pagina stia finendo per inserire il subtotale per pagina.
E poi non si riesce a costruire il report in maniera visuale. Ad esempio guardando la pagina ed inserendo i vari campi con un drag&drop del mouse.
Attualmente uso fpdf con queste due classi:
<?php
require('../include/fpdf/mysql_table.php');
session_start();
/*
@author Salvatore Baglieri
*/
class PDF extends PDF_MySQL_Table {
function Header() {
//Logo
//Arial bold 15
$this->SetFont('Arial','B',20);
//Move to the right
//$this->Cell(80);
//Title
$this->Cell(100,15,'Elenco dei pazienti',1,0,'C');
$this->SetFont('Arial','',8);
$this->Image('../immagini/logo.png', ($this->GetX())+50, 10, '', 18);
// $this->MultiCell(0,5,$_SESSION['query'],1,1,'C');
//Line break
$this->Ln(20);
}
//Page footer
function Footer() {
//Position at 1.5 cm from bottom
$this->SetY(-15);
//Arial italic 8
$this->SetFont('Arial','I',8);
$this->Write(10,'Documento stampato il '.date('d-m-Y').' alle '.date('h:i').' con xxx - ');
$this->SetTextColor(0,0,255);
$this->SetFont('','U');
$this->Write(10,'Digital 2B s.n.c.','http://www.digital2b.com');
$this->SetTextColor(0,0,0);
$this->SetFont('Arial','I',8);
// $this->Image('immagini/xxx.jpg',10,280, 10, 10);
$this->Line(10, 196, 285, 196);
//Page number
$this->Cell(0,10,'Pagina '.$this->PageNo().'/{nb}',0,0,'R');
}
}
//Connect to database
mysql_connect('xxx','xxx','xxx');
mysql_select_db('xxx');
$pdf=new PDF();
$pdf->SetCompression(true);
$pdf->SetTitle('Elenco_Pazienti');
$pdf->AliasNbPages();
$pdf->Open();
$pdf->AddPage('L');
//Second table: specify 3 columns
$pdf->AddCol('IdAnagrafica',5,'Id','L');
$pdf->AddCol('Cognome',35,'Cognome','L');
$pdf->AddCol('Nome',35,'Nome','L');
//$pdf->AddCol('Sesso',12,'Sesso','C');
$pdf->AddCol('DatadiNascita',22,'Data Nascita','C');
$pdf->AddCol('CodiceFiscale',36,'Codice Fiscale','L');
$pdf->AddCol('Professione',45,'Professione','L');
$pdf->AddCol('Domicilio',45,'Domicilio','L');
$pdf->AddCol('ComunediResidenza',45,'Comune','L');
$prop=array('HeaderColor'=>array(255,150,100),
'color1'=>array(210,245,255),
'color2'=>array(255,255,210),
'padding'=>2);
$pdf->SetFont('Arial','',9);
$pdf->Table($_SESSION['query'],$prop);
$pdf->Output("Elenco_Pazienti.pdf", "D");
?>
Utilizzando questa classe:
<?php
require('fpdf.php');
class PDF_MySQL_Table extends FPDF {
var $ProcessingTable=false;
var $aCols=array();
var $TableX;
var $HeaderColor;
var $RowColors;
var $ColorIndex;
function Header() {
//Print the table header if necessary
if($this->ProcessingTable)
$this->TableHeader();
}
function TableHeader() {
//$this->SetFont('Arial','B',12);
$this->SetFont('','B','');
$this->SetX($this->TableX);
$fill=!empty($this->HeaderColor);
if($fill)
$this->SetFillColor($this->HeaderColor[0],$this->HeaderColor[1],$this->HeaderColor[2]);
foreach($this->aCols as $col)
$this->Cell($col['w'],6,$col['c'],1,0,'C',$fill);
$this->Ln();
$this->SetFont('','','');
}
function Row($data)
{
$this->SetX($this->TableX);
$ci=$this->ColorIndex;
$fill=!empty($this->RowColors[$ci]);
if($fill)
$this->SetFillColor($this->RowColors[$ci][0],$this->RowColors[$ci][1],$this->RowColors[$ci][2]);
foreach($this->aCols as $col)
$this->Cell($col['w'],5,$data[$col['f']],1,0,$col['a'],$fill);
$this->Ln();
$this->ColorIndex=1-$ci;
}
function CalcWidths($width,$align)
{
//Compute the widths of the columns
$TableWidth=0;
foreach($this->aCols as $i=>$col)
{
$w=$col['w'];
if($w==-1)
$w=$width/count($this->aCols);
elseif(substr($w,-1)=='%')
$w=$w/100*$width;
$this->aCols*['w']=$w;
$TableWidth+=$w;
}
//Compute the abscissa of the table
if($align=='C')
$this->TableX=max(($this->w-$TableWidth)/2,0);
elseif($align=='R')
$this->TableX=max($this->w-$this->rMargin-$TableWidth,0);
else
$this->TableX=$this->lMargin;
}
function AddCol($field=-1,$width=-1,$caption='',$align='L')
{
//Add a column to the table
if($field==-1)
$field=count($this->aCols);
$this->aCols[]=array('f'=>$field,'c'=>$caption,'w'=>$width,'a'=>$align);
}
function Table($query,$prop=array())
{
//Issue query
$res=mysql_query($query) or die('Error: '.mysql_error()."<BR>Query: $query");
//Add all columns if none was specified
if(count($this->aCols)==0)
{
$nb=mysql_num_fields($res);
for($i=0;$i<$nb;$i++)
$this->AddCol();
}
//Retrieve column names when not specified
foreach($this->aCols as $i=>$col)
{
if($col['c']=='')
{
if(is_string($col['f']))
$this->aCols*['c']=ucfirst($col['f']);
else
$this->aCols*['c']=ucfirst(mysql_field_name($res,$col['f']));
}
}
//Handle properties
if(!isset($prop['width']))
$prop['width']=0;
if($prop['width']==0)
$prop['width']=$this->w-$this->lMargin-$this->rMargin;
if(!isset($prop['align']))
$prop['align']='C';
if(!isset($prop['padding']))
$prop['padding']=$this->cMargin;
$cMargin=$this->cMargin;
$this->cMargin=$prop['padding'];
if(!isset($prop['HeaderColor']))
$prop['HeaderColor']=array();
$this->HeaderColor=$prop['HeaderColor'];
if(!isset($prop))
$prop=array();
if(!isset($prop))
$prop=array();
$this->RowColors=array($prop,$prop);
//Compute column widths
$this->CalcWidths($prop['width'],$prop['align']);
//Print header
$this->TableHeader();
//Print rows
//$this->SetFont('Arial','',11);
$this->ColorIndex=0;
$this->ProcessingTable=true;
while($row=mysql_fetch_array($res))
$this->Row($row);
$this->ProcessingTable=false;
$this->cMargin=$cMargin;
$this->aCols=array();
}
}
?>
Tutta via:
Riporto quel che ho chiesto su HTML.it (si può fare pubblicità? Se no, scusatemi!)
Ho grandissimi problemi con la gestione delle stampe di report commerciali.
Ho provato due alternative:
Il primo l'ho abbandonato subito perchè non mi permetteva di inserire "Intestazione di Pagina" e "Piè di pagina" su ogni pagina stampata.
Per il secondo ho creato una classe PHP a cui passo la query e lui genera il report.
Il problema è:
Non esiste qualche programma che, in maniera automatica, genera report in PHP? Che mi aggiunga i subtotali ad ogni colonna?
Ho visto un programma (fatto in Delphi + Access Mdb) che addirittura permette di creare report personalizzati con un word processor simile a Word.
E' una funzionalità offerta da Delphi? Un programma esterno? Come si può fare lo stesso in php?
Cioè, come do la possibilità al cliente di personalizzare i propri report?