Stampa da PHP

Alex@1983

Utente Attivo
9 Mag 2015
126
2
18
Mumble......Mumble.....

nuovo "problema".....sicuramente semplice da affrontare per i miei "helper" abituali ..... ma assolutamente misterioso per quanto mi riguarda.

questa volta , giusto quasi alla fine del mio progettino , è riuscire stampare direttamente dalla paginetta .php .....con un bel pulsantino STAMPA

mi spiego meglio:

Inserisco dei record nel mio DB :

-ID (autoincrement) DATA |ORA | OPERATORE| RICHIESTA |CATEGORIA |SOTTO CATEGORIA | DESCRIZIONE | NOTE

In un'altra pagina , trmite l'ID ricerco il record che mi interessa, che mi viene riportato nei relativi campi.

IL mio "desiderata" sarebbe quello di riuscire a tirare fuori un output di stampa e tramite il relativo tasto .... stampare su una stampante locale , assolutamente non collegata al server ( che è su altervista ) ma che si trova nel mio ufficio.

So che poi potrò preoccuparmi di impinare il tutto per come deve essere graficamente stampato....ma quello che mi manca è proprio il now-haw per arrivare al lanciare il comando di stampa

Ho visto che ci sono diverse librerie FPDF - HTML2PDF - HTML2FPDF ..... ma onestamente nessuno poi alla fine arriva al dunque , spiegando come ottenere il risultato.......

Chi ha ..... per l'ennessima volta.... di darmi una dritta ????
redface.png
030.gif
sadico.gif
blink.gif
rolleyes.png


Grazie ...sempre!
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
da sempre utilizzo FPDF che mi sembra adatto per creare report semplici ma anche "ben" complessi,

per listati semplici
ho "esteso" la classe FPDF, sviluppando i metodi "Header" e "Footer" in essa presenti ma vuoti
i due metodi gestiscono in maniera automatica l'intestazione ed il piede della pagina

ho inserito anche un mio metodo "BodyTable", che legge il risultato della select e compone la tabella da stampare

sviluppando lo script in questo modo, ho ottenuto una classe capace di listare tabelle generiche ( inteso query anche complesse )
ed al contempo ho semplificato molto lo sviluppo degli script che raccolgono i dati e li inviano alla stampa

questa è la struttura della classe
PHP:
require_once "FPDF/fpdf.php";

class PDF extends FPDF
{
    function BodyTable()
    {
        global $sth, $settings;

        while( $Row = $sth->fetch(PDO::FETCH_ASSOC) )
        {
            for($i=0; $i<$settings['Ncolumn']; $i++)
            {
                $value = nf($Row[$settings['column'][$i]], $settings['round'][$i]);

                .......

                $this->Cell($settings['colwidth'][$i], 6, $value, 'LR', 0, $settings['align'][$i], $fill);
            }
        }
    }


    function Header()
    {
        global $settings;
        .....
    }


    function Footer()
    {
        global $settings;
        .....
    }
}

questo è un esempio di script
PHP:
require_once NS('Iclasspdf');

$settings['title']    = 'Lista delle tabelle di riferimento';     // titolo del listato
$settings['column']   = array('tab_cod','tab_ele','tab_descr_1'); // elenco delle colonne provenienti dal db da stampare
$settings['header']   = array('tabella','elemento','referenza');  // intestazione delle colonne
$settings['colwidth'] = array(20,20,200);                         // larghezza delle colonne
$settings['align']    = array('C','C','L');                       // allineamento delle colonne L - C - R
$settings['round']    = array(null,null,null);                    // eventuale arrotondamento da applicare / formato data
$settings['hide']     = array(1,1,0);                             // colonne da "identare" quando si ripete il codice

$sql = "SELECT * FROM tabelle ORDER BY tab_cod, tab_ele, tab_descr_1";
$sth = $db->query( $sql );

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

$pdf->SetMargins(10,10,10);
$pdf->SetAutoPageBreak(true, 15);
$pdf->SetLineWidth(.4);
$pdf->AliasNbPages();
$pdf->SetDrawColor(0,153,255);

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

$_SESSION['OPreportname'] = ReportName("tabelle");
require_once NS('Iunsetvarsrep');
cambiando i parametri in $settings[] e la select in $sql, un nuovo report è pronto

report più complessi richiedono uno sviluppo maggiore ma con FPDF, come detto, si ottengono buoni risultati
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
giusto per vedere una cosa semplice,
due report nello stesso pdf con dimensioni diverse (anche il numero delle colonne potrebbe essere differente)
ed il relativo script
PHP:
require_once NS('Iclasspdf');

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

$pdf->SetMargins(10,10,10);
$pdf->SetAutoPageBreak(true, 15);
$pdf->SetLineWidth(.4);
$pdf->AliasNbPages();
$pdf->SetDrawColor(0,153,255);

do_it('a');
do_it('b');

$_SESSION['OPreportname'] = ReportName("DBconsistency");
require_once NS('Iunsetvarsrep');


function do_it($x) {
  global $db, $sth, $pdf, $settings;

  switch ($x) {
    case "a":
      $settings['newtable'] = false;
      $settings['title']    = 'Retrieve hierarchical data from database top-down';
      $settings['column']   = array('distance','GLID','GLCD','GLDesc','ParentGLCD','NodeSequence');
      $settings['header']   = array('distance','GLID','GLCD','GLDesc','ParentGLCD','NodeSequence');
      $settings['colwidth'] = array(20,20,20,70,20,70);
      $settings['align']    = array('C','C','C','L','C','L');
      $settings['round']    = array(null,null,null,null,null,null);
      $settings['hide']     = array(0,0,0,0,0,0);

      $sql = "SELECT * FROM testDB.dbo.GLSubordinates_v1('30') order by NodeSequence";

      $pdf->AddPage();

      break;

    case "b":
      $settings['newtable'] = true;
      $settings['title']    = 'Retrieve hierarchical data from database bottom-up';
      $settings['column']   = array('distance','GLID','GLCD','GLDesc','ParentGLCD','ParentGLDesc');
      $settings['header']   = array('distance','GLID','GLCD','GLDesc','ParentGLCD','ParentGLDesc');
      $settings['colwidth'] = array(30,30,30,60,30,60);
      $settings['align']    = array('C','C','C','L','C','L');
      $settings['round']    = array(null,null,null,null,null,null);
      $settings['hide']     = array(0,0,0,0,0,0);

      $sql = "SELECT * FROM testDB.dbo.GLSuperiors_v1('38')";
      break;
  }
  $sth = $db->query( $sql );
  $pdf->BodyTable();
}
 

Allegati

  • _Test_20171121_162920.pdf
    3,4 KB · Visite: 521

Alex@1983

Utente Attivo
9 Mag 2015
126
2
18
Ciao Marino, ....grazie per l'aiuto.......ma non ne cavo un ragno dal buco !!!!!....o_O

ho provato a fare una pagina in questo modo ......ma credo di non averci capito nulla!!!1 ricevo errori su errori l'ultimo che ho ricevuto è :

Fatal error: Call to undefined function NS() in /membri/web1105/Registro/TEST_Stampa2.php on line 42

ecco la pagina che ho provato ad implementare con il tuo codice:
PHP:
<?php
ob_start();
session_start();

// Includo la connessione al database
require('config.php');
require_once NS('Iclasspdf');
// Se non è stata definita la variabile manda l'utente alla homepage
if(!isset($_SESSION['login']))
{
    header('Location: login.php');
    exit;
//.....
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<link type="text/css" rel="stylesheet" media="all" href="ri.css"/>
<head>
    <title>Registro Ispezioni</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="generator" content="HAPedit 3.0">

</head>

<body background="Immagini/431.png">

<?PHP

require_once "fpdf.php";

class PDF extends FPDF
{
    function BodyTable()
    {
        global $sth, $settings;

        while( $Row = $sth->fetch(PDO::FETCH_ASSOC) )
        {
            for($i=0; $i<$settings['Ncolumn']; $i++)
            {
                $value = nf($Row[$settings['column'][$i]], $settings['round'][$i]);


                $this->Cell($settings['colwidth'][$i], 6, $value, 'LR', 0, $settings['align'][$i], $fill);
            }
        }
    }


    function Header()
    {
        global $settings;

    }
}
    function Footer()
    {
        global $settings;
      
    }

$settings['title']    = 'TEST - STAMPA';     // titolo del listato
$settings['column']   = array('id', 'data','operatore'); // elenco delle colonne provenienti dal db da stampare
$settings['header']   = array('ID', 'DATA', 'OPERATORE');  // intestazione delle colonne
$settings['colwidth'] = array(20,20,200);                         // larghezza delle colonne
$settings['align']    = array('C','C','L');                       // allineamento delle colonne L - C - R
$settings['round']    = array(null,null,null);                    // eventuale arrotondamento da applicare / formato data
$settings['hide']     = array(1,1,0);                             // colonne da "identare" quando si ripete il codice

$sql = "SELECT * FROM Registro ORDER BY id, data, operatore";
$sth = $db-> $sql;

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

$pdf->SetMargins(10,10,10);
$pdf->SetAutoPageBreak(true, 15);
$pdf->SetLineWidth(.4);
$pdf->AliasNbPages();
$pdf->SetDrawColor(0,153,255);

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

$_SESSION['OPreportname'] = ReportName("tabelle");
require_once NS('Iunsetvarsrep');

?>
 </body>
</html>

<?php
ob_end_flush();
?>

Mi aiuti con un codice A PROVA DI DEFICIENTE...... per arrivare a stampare ?

Ad essere onesti..... non capisco neanche dove va la struttura della classe......

ne dove inserire la connessione al DB.......

Grazie mille!!!!!!!!!

:(
 
Ultima modifica:

Max61

Utente Attivo
2 Mar 2014
740
4
18
Ciao Alex, prova a modificare questi file con cui io lancio le stampe in pdf con la classe fpdf.
Metti le pagine dentro la cartella views cambia il nome dei miei campi e del db con i tuoi e fai le prove.
Io sono autodidatta e alle prime armi e chiedo spesso aiuto al forum, più di così non so fare...
Ciao
 

Allegati

  • FPDF.zip
    17,5 KB · Visite: 457
Discussioni simili
Autore Titolo Forum Risposte Data
M Problemi con la stampa dei valori in php PHP 1
S [PHP] Stampa a video Nome e Cognome in seguito a login PHP 1
M [PHP] Database e stampa files PHP 2
F [PHP + MYSQLI] Stampa a video di una tabella nel database PHP 4
R [PHP] Problema stampa array bidimensionali con formula $html.=<<<myHtml... PHP 2
jailbait [PHP] Upload immagine e stampa a schermo PHP 0
L border in tabella php + layout stampa PHP 0
E [PHP] associazione id e stampa a video PHP 0
K stampa e modifica tabella in php e ms sql PHP 2
E [PHP] creazioni nuove variabili per modulo di stampa PHP 1
N [PHP] stampa video PHP 3
otto9due [PHP] Dubbio esistenzaile: Regex email e stampa valori trovati.. PHP 5
Roulder [PHP] Stampa file di testo Automatico senza conferma PHP 1
V [PHP] stampa a video valori query array multidimensionale PHP 4
G PHP stampa di immagini PHP 2
teotode stampa automatica da php PHP 4
M stampa modello f24 con php PHP 1
C Stampa pagina php senza intestazioni PHP 1
A PHP, word e stampa unione! PHP 3
Q php/html non stampa i valori PHP 3
renoir09 Stampa di documenti generati con PHP PHP 5
F creazione e stampa file pdf mediante PHP PHP 2
L Stampa Su Stampante Con Php PHP 3
D Stampa a video solo campi compilati MySQL 1
D Stampa a video in altra pagina html Database 3
K Margini di stampa Photoshop 4
Samuele Ronzani Stampa su stampante predefinita Javascript 11
F INDESIGN: problema esportazione esecutivo per la stampa con foto B/N Webdesign e Grafica 0
M Stampa fpdf e lettere accentate PHP 0
S incoerenza di stampa. problemi con il magenta Photoshop 3
atipika INSERIRE ICONE DOWNLOAD E STAMPA WORDPRESS WordPress 10
L [RISOLTO] Stampa a video risultato count in html PHP 13
S Consigli per invio di comunicati stampa Discussioni Varie 2
P [WordPress] B2B stampa abbigliamento - plugin woocommerce? WordPress 2
E [Photoshop] consigli per stampa puzzle personalizzato Photoshop 0
P problema di stampa con photoshop Presentati al Forum 0
J modifica spooler di stampa per stampare in ordine di nome i files pdf Windows e Software 2
napuleone [HTML] Numerazione pagine in stampa HTML e CSS 2
K [Visual Basic] Stampa e modifica record non funziona più Visual Basic 0
K [ASP.Net] Problema stampa e modifica ms sql ASP.NET 0
W [Photoshop] Problemi di stampa Photoshop 1
M [HTML] stampa riga condizionata HTML e CSS 3
D Stampa Webdesign e Grafica 1
S [Javascript] [HTML] problema nella stampa degli elementi della pagina Javascript 3
napuleone [Javascript] cambiare i parametri di stampa con js Javascript 2
Rikk73 [C#] problema con stampa da query linq EnumerableRowCollection .NET Framework 0
M Stampa immagine video tabella HTML e CSS 4
F layout stampa css HTML e CSS 2
V Stampa con msword PHP 3
C Cookiechoices Stampa pagina Javascript 2

Discussioni simili