creare pdf

  • Creatore Discussione Creatore Discussione amhal
  • Data di inizio Data di inizio

amhal

Utente Attivo
17 Feb 2011
89
1
8
ciao a tutti, vorrei dare la possibilità all'utente di creare un pdf, ho scaricato la libreria fpdf.php e le righe di codice che creano il pdf stesso. Funziona tutto, ma vorrei sapere come
fare per dirgli cosa deve inserire nell'output. Es: se lanciate queste righe di codice con la libreria, nel pdf appare 'ciao', come faccio a sostituire il ciao con una pagina con delle righe
che vanno a capo? Grazie

Codice:
define('FPDF_FONTPATH','font/');
require('fpdf.php');

$pdf=new FPDF();
$pdf->Open();
$pdf->AddPage();
$pdf->SetFont('Arial','',12);
$pdf->Cell(20,10,'ciao');
$pdf->Output();


?>
 
ti mando un mio script perfettamente funzionante e se trovo il modo ti allego anche il pdf ... Cattura.PNG

se sostituisci NextStream(99) con il nome di uno script non ti serve scr.php
mentre DB.php contiene la gestione del database ed è chiamato da
$data_counter = exec_DB('select', $sql);
in cascata io chiamo uno script (99) che consente all'utente di visualizzare il pdf e poi continuare nel lavoro
ciao

PHP:
<?php

# http://localhost/test_site/php/Optidea/Optidea_CAR_report_car.php

error_reporting(E_ALL);
$swN = "RCAR";

require("FPDF/fpdf.php");
require("Optidea__Class_PDF.php");
require('Optidea__Config_Scr.php');
require('Optidea__Config_DB.php');

if ($OPlog) error_log(" ", 0);
if ($OPlog) error_log("$swN main : ". basename ($_SERVER['PHP_SELF'],".php"). ".php", 0);

$h = true;

$w = array(34,10,73,20,20,20,20,5,5,5,5,5,5,5,5,5,5,30);

$title = 'Optidea - Lista delle caratteristiche';

$header[] = 'caratteristica';
$header[] = 'ID';
$header[] = 'descrizione';
$header[] = 'UM';
$header[] = 'secco';
$header[] = 'cartellino';
$header[] = 'stampa';
$header[] = '1';
$header[] = '2';
$header[] = '3';
$header[] = '4';
$header[] = '5';
$header[] = '6';
$header[] = '7';
$header[] = '8';
$header[] = '9';
$header[] = '10';
$header[] = 'aggiorn.';

$fill = false;

$PageBreak = true;

$data = array();

$sql  = "SELECT ca_cod,ca_nr,ca_descr,ca_um,ca_secco,ca_cartel,ca_sort,";
$sql .= "ca_tipo1,ca_tipo2,ca_tipo3,ca_tipo4,ca_tipo5,ca_tipo6,ca_tipo7,ca_tipo8,ca_tipo9,ca_tipo10,";
$sql .= "convert(varchar, ca_aggior, 103) as ca_aggior_c ";
$sql .= "FROM caratteristiche WHERE ca_nr>0 ORDER BY ca_sort,ca_cod";

$data_counter = exec_DB('select', $sql);

$pdf = new PDF('L', 'mm', 'A4');

$pdf->SetAuthor("Optidea project");
$pdf->SetCreator("mrgas");
$pdf->SetSubject("caratteristiche");
$pdf->SetTitle($title);

$pdf->SetMargins(10,10,10);

$pdf->SetDrawColor(0,153,255);
$pdf->SetLineWidth(.4);
$pdf->AliasNbPages();

$pdf->AddPage();
$pdf->BodyTable();

$_SESSION['OPreportname'] = date('Ymd_His') . "_caratteristiche.pdf";
$OPpdffile = $_SESSION['OPreportfolder'] . "\\" . $_SESSION['OPreportname'];

$pdf->Output("$OPpdffile", 'F');

unset($pdf);
unset($h);
unset($w);
unset($title);
unset($header);
unset($fill);
unset($PageBreak);
unset($data);
unset($data_counter);
unset($OPpdffile);

header(NextStream(99));
?>


PHP:
<?php

class PDF extends FPDF {

  function Header() {
    global $h,$w,$title,$header,$fill;

    // TITLE
    $this->SetTextColor(0);
    $this->SetFont('Helvetica','B',16);
    $this->Cell(120,10,$title,0,1,'L');

    // HEADER
    //Colors, line width and bold font
    $this->SetFillColor(0,153,255);
    $this->SetTextColor(255);
    $this->SetFont('Helvetica','B',10);

    for($i=0;$i<count($header);$i++)
      $this->Cell($w[$i],7,$header[$i],1,0,'C',1);
    $this->Ln();

    $h = true;
  }

  function BodyTable() {
    global $swN,$h,$w,$title,$header,$fill,$data;

    //now spool out the data from the $data array
    $preced = "";
    foreach($data as $row) {

      $this->Cell(0,6,' ',0,0,'L');   // Check Page Break by empty cell
      $this->Ln(0);

      if ($h) {
        $fill = false;
        $this->SetFillColor(178,178,178);
        $this->SetTextColor(0);
        $this->SetFont('');
      }
      for($i=0;$i<count($header);$i++) {
        $valore = $row[$i];

        switch ($swN) {
          case "RCOMP":
            if ($i == 4 or $i == 6) $valore = ($valore == 0 ?  " " : number_format($valore, 4, ',', '.'));
            if ($i == 8)            $valore = ($valore == 0 ?  " " : number_format($valore, 2, ',', '.'));
            break;
          case "RCOST":
            if ($i > 3 and $i < 10) $valore = ($valore == 0 ?  " " : number_format($valore, 2, ',', '.'));
            break;
          case "RCxF":
            if ($preced == $row[0] and $i < 3 and !$h) $valore = " ";
            if ($i > 6)             $valore = ($valore == 0 ?  " " : number_format($valore, 2, ',', '.'));
            break;
        }

        $this->Cell($w[$i],6,$valore,'LR',0,'C',$fill);
      }
      $this->Ln();

      // flips from true to false and vise versa
      $fill =! $fill;

      $preced = $row[0];
      $h = false;
    }
  }

  function Footer() {
    global $w;

    $this->Cell(array_sum($w),0,'','T');

    $this->SetY(-15);
    $this->SetFont('Helvetica','I',8);
    $this->Cell(0,10,'Optimal Solution System',0,0,'L');
    $this->Ln(0);
    $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
    $this->Ln(0);
    $this->Cell(0,10,date('l, F jS, Y - H:i:s'),0,0,'R');
  }
}

?>
 
Ultima modifica:
scusa ti mando anche la gestione del DB perchè un' array e passata come global
io uso ms sql ma puoi convertire adeguatamente in mysql se ti interessa

PHP:
<?php

$OPlog = 1;

function exec_DB($CmdType, $sql) {
  global $swN,$OPlog,$data,$data_val;

  $OPdbHOST = 'DB_server_name';
  $OPdbUSER = 'DB_user_name';
  $OPdbPASS = 'DB_user_password';
  $OPdbNAME = 'DB_name';

  if ($OPlog) error_log("$swN $CmdType : $sql", 0);

  try { $db = new PDO("sqlsrv:Server=$OPdbHOST;Database=$OPdbNAME", "$OPdbUSER", "$OPdbPASS"); }
  catch (PDOException $e) { die( print_r( 'Connection failed : ' . $e->getMessage(), true)); }

  if ($CmdType == "select") {
    $sth = $db->prepare($sql); $sth->execute(); $data = $sth->fetchall(PDO::FETCH_NUM);
    return $OPdbresult = count($data);
  }

  if ($CmdType == "select_val") {
    $sth = $db->prepare($sql); $sth->execute(); $data_val = $sth->fetchall(PDO::FETCH_NUM);
    return $OPdbresult = count($data_val);
  }

  if ($CmdType == "insert" or $CmdType == "update" or $CmdType == "delete") {
    return $OPdbresult = $db->exec($sql);
} }

?>
 

Discussioni simili