Stampare più pagine con fpdf

kyrajack

Nuovo Utente
19 Mar 2014
3
0
0
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:

HTML:
<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:
<?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
 
Ultima modifica di un moderatore:

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
ciao,

ti suggerisco di spostare

$pdf = new FPDI();

prima di

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

ma non sono certo, se non dovesse funzionare prova a postare una copia
di ddt.pdf se non contiene dati riservati.

ciao
Marino
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
scusa, anche l'output deve stare fuori dal ciclo for, dopo la sua chiusura

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

ma forse altre cose ... per come è impostato il tutto, stampa solo 1 pagina x pdf

leggi 1 pagina, poi aggiungi testo
PHP:
// now write some text above the imported page 
$pdf->SetFont('Helvetica'); 
$pdf->SetFontSize(18); 
$pdf->SetTextColor(196, 91, 106); 
$pdf->SetXY(65, 43);

aggiungi il testo
PHP:
$pdf->Write(0, 'A'.$code);

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

per riaprirne un altro al prossimo ciclo del for
 
Ultima modifica:

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
oppure, leggo dal tuo script che importi solo la pagina 1

$tplIdx = $pdf->importPage(1);

mentre se il pdf contiene più pagine dovresti modificare

$NumeroPagine = $pdf->setSourceFile("ddt.pdf");

ed inserire un ciclo for
ciao
Marino
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
da ultimo, guarda il risultato nel pdf allegato, se va bene, il codice è il seguente
ciao
Marino

ps, ovviamente il file di partenza conteneva 2 pagine uguali ....

PHP:
<?php 

# http://localhost/test_site/php/test/fpdi.php

require("fpdf/fpdf.php");
require("fpdi/fpdi.php");

$numero = 1; 


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

  $code = counter();

  $pdf = new FPDI(); 
//$pdf->AddPage('L');
  $NumeroPagine = $pdf->setSourceFile("ddt.pdf");
  print "numero di pagine : ".$NumeroPagine."<br />";
 
  for($i = 1; $i <= $NumeroPagine; $i++){
    print "pagina : ".$i."  code : ".$code."<br />";

    $tplIdx = $pdf->importPage($i); 
    $s = $pdf->getTemplatesize($tplIdx);
//  $pdf->useTemplate($tplIdx, 0, 1, 300); 
    $pdf->AddPage($s['w'] > $s['h'] ? 'L' : 'P', array($s['w'], $s['h']));
    $pdf->useTemplate($tplIdx);

    $pdf->SetFont('Helvetica');		// now write some text above the imported page
    $pdf->SetFontSize(18); 
    $pdf->SetTextColor(196, 91, 106); 
    $pdf->SetXY(65, 43); 
    $pdf->Write(0, 'A'.$code); 
  } 
  $pdf->Output('A'.$code.".pdf",'F'); 
} 
print "DONE !<br />";

function counter(){
  $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); 

  return $code;
} 
?>
 

Allegati

  • A123468.pdf
    6,8 KB · Visite: 484
Ultima modifica:

kyrajack

Nuovo Utente
19 Mar 2014
3
0
0
Ciao, grazie mille per l'aiuto, alla fine sono riuscito a risolvere spostando prima del ciclo for

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

e spostando l'output

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

dopo il ciclo come mi hai suggerito
grazie
 
Discussioni simili
Autore Titolo Forum Risposte Data
A stampare più pagine automaticamente PHP 3
elpirata [PHP] Stampare i valori di una variabile scritta su più righe PHP 1
G Stampare valori in più div con PHP e MySQL PHP 4
I stampare una stringa echo PHP 2
F Stampare valori di un database PHP 14
A Stampare dati da form PHP 15
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
G leggere file txt e stampare con php il contenuto a video PHP 7
F stampare a video i risultati della query PHP 1
elpirata Ricavare e stampare indirizzo ip da array associativo PHP 0
B Stampare una porzione della pagina PHP 0
V Come stampare su Excel tabella con rowspan e colspan Javascript 2
elpirata Stampare carattere simbolo euro PHP 10
W Stampare file PDF in varie modalità. Windows e Software 5
L pdo (stampare un valore con ritorno a funzione) PHP 0
P [PHP] Aggiungere giorni e stampare risultato da data inserita in input PHP 3
P [PHP] Stampare record di diverse tabelle ma con nomi uguali PHP 6
K [PHP] Stampare tabella da database differenti. PHP 4
M Stampare con php e mysql PHP 8
L [PHP] stampare un'array di un database PHP 0
J modifica spooler di stampa per stampare in ordine di nome i files pdf Windows e Software 2
T PHP+MYSQL: stampare record con numero progressivo PHP 3
cristoforo58 Stampare dei valori XML in PHP PHP 0
K [PHP] Cancellare e Stampare tabella PHP 3
M [PHP] come stampare un Qr-code in FPDF PHP 8
M [Javascript] "Stampare" nel codice Var JS Javascript 5
N [PHP] stampare pagina html PHP 0
fulviozecchin [Java] Stampare intervallo tra due interi senza cicli Java 2
F [PHP] Stampare dati inviati tramite ajax PHP 0
elpirata [RISOLTO]Stampare giorno della settimana in tabella php PHP 6
elpirata [PHP] [RISOLTO] Stampare classe css in base al risultato della query PHP 6
Fuego2806 Stampare dati Form su immagine di sfondo con html HTML e CSS 1
Fuego2806 [PHP] Stampare dati Form su immagine di sfondo con html PHP 70
webmachine [PHP] Problema: Stampare tutte le occorrenza di una SELECT PHP 2
momeraths come stampare immagini contenute in un database PHP 7
I stampare in video i dati inseriti nel db PHP 1
M Sito "e-commerce", stampare dati di registrazione e dati dell'acquisto da pagine diverse PHP 7
L Stampare immagine php PHP 2
elpirata Stampare a video in echo table il risultato di una query PHP 4
Shyson Stampare lista in ordine decrescente Database 1
A Stampare senza sidebar Javascript 0
F stampare array php PHP 2
N Non stampare valori duplicati PHP 1
T Stampare maschera fronte/retro MS Access 0
C Stampare font personalizzati HTML e CSS 2
S estrarre e stampare a video un record in un div PHP 7
N FPDF stampare pdf automaticamente su stampante impostata PHP 0
M Stampare valore di un array PHP 1
P Stampare a video PHP 1
P Stampare '<?' in php PHP 7

Discussioni simili