Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Problema con FPDF e JavaScript

    Scusate se mi ripropongo.
    Ho realizzato un piccolo script, di prova, per la gestione di un protocollo, al suo interno ho inserito una form che mi lancia la stampa.
    Grazie ad FPDF ho risolto il problema.
    Adesso quello che vorrei fare e lanciare direttamente la stampa.
    Ho provato la libreria javascript che permette di farlo ma non sono riuscito a capire come inserirla nel mio script.
    Di seguito ho riportato il file che provvede alla stampa e la classe.

    Grazie per l'eventuale aiuto.

    stampa_prot.php

    Codice PHP:
    <?php 
    define
    ('FPDF_FONTPATH','font/'); 
    include (
    "config.php"); 
    require(
    'classe_stampa.php'); 
    class 
    PDF extends PDF_classe 
    {} 
    $pdf=new PDF(); 
    $pdf->AliasNbPages(); 
    $pdf->Open(); 
    $pdf->Table("SELECT * ,DATE_FORMAT(Data,'%d/%m/%Y') as data_prot FROM protocollo"); 
    $pdf->Output(); 
    ?>
    questa è la classe

    Codice PHP:
    <?php 
    require('fpdf/fpdf.php'); 
    class 
    PDF_classe extends FPDF 

    function 
    Row($data

    $this->SetFillColor(232,232,232); 
    $this->SetFont('Arial','',8); 
    //Numero 
    $this->SetY(2); 
    $this->Cell(50,0,'Numero Protocollo',0,0,'L',0); 
    $this->Cell(1,0,$data[Numero],0,0,'R',0); 
    //Data 
    $this->SetY(5); 
    $this->Cell(0,0,'Data',0,0,'L',0); 
    $this->Cell(0,0,$data[data_prot],0,0,'R',0); 
    //Cognome 
    $this->SetY(8); 
    $this->Cell(0,0,'Cognome',0,0,'L',0); 
    $this->Cell(0,0,$data[Cognome],0,0,'R',0); 

    //Nome 
    $this->SetY(11); 
    $this->Cell(0,0,'Nome',0,0,'L',0); 
    $this->Cell(0,0,$data[Nome],0,0,'R',0); 
    //Oggetto 
    $this->SetY(14); 
    $this->Cell(0,0,'Oggetto',0,0,'L',0); 
    $this->Cell(0,0,$data[Oggetto],0,0,'R',0); 


    function 
    Table($query

        
    //errore query 
        
    $res=mysql_query($query) or die('Error: '.mysql_error()."
    Query: 
    $query"); 
                    while(
    $row=mysql_fetch_array($res)) 
                    { 
                    
    $this->AddPage(); 
            
    $this->Row($row); 
            
    //$this->AddPage(); 
                    



    ?>

  2. #2
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    think simple think ringo

  3. #3
    si l'ho visto, l'ho provato e va bene fino a quando mi devo stampare una stringa.
    Quello che non sono riuscito a fare è integrarlo nel mio script che prende i dati da una DB

  4. #4
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    se non ho fatto troppo casino una cosa di questo tipo dovrebbe andare:
    codice:
    <?php
    // file fpdf_js.php
    
    class PDF_Javascript extends FPDF {
    
        var $javascript;
        var $n_js;
    
        function IncludeJS($script) {
            $this->javascript=$script;
        }
    
        function _putjavascript() {
            $this->_newobj();
            $this->n_js=$this->n;
            $this->_out('<<');
            $this->_out('/Names [(EmbeddedJS) '.($this->n+1).' 0 R ]');
            $this->_out('>>');
            $this->_out('endobj');
            $this->_newobj();
            $this->_out('<<');
            $this->_out('/S /JavaScript');
            $this->_out('/JS '.$this->_textstring($this->javascript));
            $this->_out('>>');
            $this->_out('endobj');
        }
    
        function _putresources() {
            parent::_putresources();
            if (!empty($this->javascript)) {
                $this->_putjavascript();
            }
        }
    
        function _putcatalog() {
            parent::_putcatalog();
            if (isset($this->javascript)) {
                $this->_out('/Names <</JavaScript '.($this->n_js).' 0 R>>');
            }
        }
    }
    ?>
    
    <?php 
    // file classe_stampa.php
    
    class PDF_classe extends PDF_Javascript 
    { 
    	function Row($data) 
    	{ 
    		$this->SetFillColor(232,232,232); 
    		$this->SetFont('Arial','',8); 
    		//Numero
    		$this->SetY(2); 
    		$this->Cell(50,0,'Numero Protocollo',0,0,'L',0); 
    		$this->Cell(1,0,$data[Numero],0,0,'R',0); 
    		//Data
    		$this->SetY(5); 
    		$this->Cell(0,0,'Data',0,0,'L',0); 
    		$this->Cell(0,0,$data[data_prot],0,0,'R',0); 
    		//Cognome
    		$this->SetY(8); 
    		$this->Cell(0,0,'Cognome',0,0,'L',0); 
    		$this->Cell(0,0,$data[Cognome],0,0,'R',0); 
    
    		//Nome
    		$this->SetY(11); 
    		$this->Cell(0,0,'Nome',0,0,'L',0); 
    		$this->Cell(0,0,$data[Nome],0,0,'R',0); 
    		//Oggetto
    		$this->SetY(14); 
    		$this->Cell(0,0,'Oggetto',0,0,'L',0); 
    		$this->Cell(0,0,$data[Oggetto],0,0,'R',0); 
    	} 
    
    	function Table($query) 
    	{ 
    	    //errore query
    	    $res=mysql_query($query) or die('Error: '.mysql_error()."
    Query: $query"); 
    		while($row=mysql_fetch_array($res)) 
    		{ 
    			$this->AddPage(); 
    			$this->Row($row); 
    			//$this->AddPage();
    		} 
    	} 
    }
    ?>  
    
    
    
    <?php 
    define('FPDF_FONTPATH','font/'); 
    include ("config.php"); 
    require('fpdf/fpdf.php'); 
    require('fpdf_js.php');
    require('classe_stampa.php'); 
    
    class PDF_AutoPrint extends PDF_classe
    {
    	function AutoPrint($dialog=false)
    	{
        		//Embed some JavaScript to show the print dialog or start printing immediately
    		$param=($dialog ? 'true' : 'false');
    		$script="print($param);";
    		$this->IncludeJS($script);
    	}
    }
    
    $pdf=new PDF_AutoPrint();
    $pdf->AliasNbPages(); 
    $pdf->Open(); 
    $pdf->Table("SELECT * ,DATE_FORMAT(Data,'%d/%m/%Y') as data_prot FROM protocollo"); 
    //Launch the print dialog
    $pdf->AutoPrint(true);
    $pdf->Output(); 
    
    ?>
    think simple think ringo

  5. #5
    Non hai fatto alcun casino!
    Funziona alla grande.
    Grazie Grazie Grazie

    E se volessi far chiudere la pagina pdf dopo la stampa.
    Sono un rompi..... lo so.

  6. #6
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    questo non credo sia possibile.


    think simple think ringo

  7. #7
    ok grazie.
    Cmq sei stato di grande aiuto

    alla prossima

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.