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

    Stampare più pagine con fpdf

    Salve, sono nuovo del forum e premetto che non sono un genio di php quindi probabilmente per risolvere il mio problema ci sarà qualche modo più semplice di quello che sto cercando di usare. Vi espongo il dilemma:

    dovrei stampare un numero n di pagine, nello stesso documento pdf, numerate con un codice sequenziale. Il numero di pagine da stampare viene scelto in un form che si trova su un'altra pagina, il problema che ho con il codice che ho scritto è che mi crea una sola pagina. Vi posto il codice così si capisce meglio:

    pagina form:

    <form action="stampa.php" method="post" id="stampe" target="_blank">
    Numero stampe:<input type="text" name="numero" id="numero"><br>
    <input type="submit" value="Stampa">
    </form>

    pagina di stampa fpdf:

    <?php
    require_once('script/fpdf/fpdf.php');
    require_once('script/fpdi/fpdi.php');
    $numero = $_POST['numero'];


    for ($stampe=1 ; $stampe <= $numero ; $stampe++){

    $var=@fopen("code.txt",'r');
    $code=@fread($var,filesize("code.txt"));
    @fclose($var);
    if ($code==null){
    $code=1;
    }
    else{
    $code=$code+1;
    }
    $var=@fopen("code.txt",'w');
    @fwrite($var,$code);
    @fclose($var);

    // initiate FPDI
    $pdf = new FPDI();
    // add a page
    $pdf->AddPage('L');
    // set the source file
    $pdf->setSourceFile("ddt.pdf");
    // import page 1
    $tplIdx = $pdf->importPage(1);
    // use the imported page and place it at point 10,10 with a width of 500 mm
    $pdf->useTemplate($tplIdx, 0, 1, 300);

    // now write some text above the imported page
    $pdf->SetFont('Helvetica');
    $pdf->SetFontSize(18);
    $pdf->SetTextColor(196, 91, 106);
    $pdf->SetXY(65, 43);
    $pdf->Write(0, 'A'.$code);
    $pdf->Output('A' . $code,'I');
    $doc = $pdf->Output('','I');

    }
    ?>



    Il ciclo for preso da solo funziona perchè mi crea il numero di codici sequenziali che decido nell'input del form, il problema sorge quando aggiungo la libreria fpdf perchè viene stampata una sola pagina con un solo codice.

    C'è un modo per risolvere questo problema?
    Qualcuno sa darmi una mano?
    Grazie in anticipo

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Benvenuto.

    Non ho mai usato fpdf, ma ad occhio direi che l'apertura del file la devi fare fuori dal ciclo, altrimenti lo sovrascrivi ad ogni iterazione e alla fine ti resta solo l'ultima.

    Fondamentalmente penso che siano queste istruzioni da mettere prima del for

    // initiate FPDI
    $pdf = new FPDI();

    // set the source file
    $pdf->setSourceFile("ddt.pdf");

    poi ripeto, potrei anche sbagliare dato che non l'ho mai usato, ma intanto che aspetti altre risposte fa una prova.

    Allo stesso modo tirerei fuori dal ciclo anche la lettura dei file txt, se sono sempre gli stessi è inutile che rileggi n volte le stesse cose.

  3. #3
    Ciao,
    grazie per la risposta tempestiva, ho provato a fare come mi hai consigliato ma non cambia nulla, ho notato però che il ciclo for non sovrascrive la pagina ad ogni ietazione perchè il codice sequenziale si ferma a 1 quindi è come se il ciclo itera una volta e poi si ferma.

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    // add a page
    $pdf->AddPage('L');

    l'hai lasciata tentro al ciclo? Quella non la devi tirare fuori.

  5. #5
    si l'ho lasciata dentro, ho tolto solamente
    // initiate FPDI
    $pdf = new FPDI();
    // set the source file
    $pdf->setSourceFile("ddt.pdf");

  6. #6
    Ci sono riuscito!!!
    Grazie al tuo aiuto ovviamente...bastava tirare fuori dal ciclo for

    // initiate FPDI

    $pdf = new FPDI();
    // set the source file
    $pdf->setSourceFile("ddt.pdf");

    come mi hai detto di fare e poi ho tirato fuori anche

    $pdf->Output('A' . $code,'I');
    $doc = $pdf->Output('','I');

    mettendoli dopo il ciclo.
    Grazie mille il tuo aiuto è stato essenziale, non ci sarei ami arrivato da solo.


Tag per questa discussione

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.