Ciao a tutti...
Ho cercato in questi giorni una soluzione a questo problema:
L'utilissimo modulo Webform fa un lavoro egregio se non fosse che manca la possibilità di far stampare il risultato dei dati appena inseriti (la classica copia per l'utente)... magari pure in formato PDF.
Cercando in rete ho trovato questo scriptino gratuito davvero carino:
http://www.fpdf.org/
COn le mie limitate conoscenze di PHP ho piazzato gli script nella root e ho aggiunto uno dei codici presenti nei tutorial (modificato all'occorrenza) nell'area della webform dedicata a "Additional Code" e...felicissimo... il tutto funziona....!!!
Alla pressione del tasto invia, in pochi secondi si apre la finestra per scaricare il PDF (risultato della compilazione) e parte anche l'email che correttamente arriva a destinazione con i medesimi dati.
Manca solo un piccolo neo da risolvere... NON avviene la redirezione alla fine del processo... la pagina in pratica... rimane li... dove eravamo rimasti... e certo non da grosse informazioni all'utente (a parte il file PDF creato e scaricato sul proprio PC).
Qualcuno può suggerirmi un modo per ripristinare il redirect che Webform prevede di suo o magari uno alternativo con lo script aggiunto??
VI posto qui in basso la parte del codice che ho inserito per la stampa PDF (con solo la prima riga del mio form):
<?php
require('fpdf.php');
class PDF extends FPDF
{
//Page header
function Header()
{
//Logo
$this->Image('logo_pb.png',10,8,33);
//Arial bold 15
$this->SetFont('Arial','B',15);
//Move to the right
$this->Cell(80);
//Title
$this->Cell(30,10,'Modulo Iscrizione Regata - Targa Florio del Mare 2009',1,0,'C');
//Line break
$this->Ln(20);
}
//Page footer
function Footer()
{
//Position at 1.5 cm from bottom
$this->SetY(-15);
//Arial italic 8
$this->SetFont('Arial','I',8);
//Page number
$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
}
}
//Instanciation of inherited class
$pdf=new PDF();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Times','',12);
$nome= $_POST['submitted'];
$pdf->Cell(0,10,'Il sottoscritto '.$nome['anagrafica_iscritto']['il_sottoscritto'],0,1);
$pdf->Output();
?>
Se poi qualcuno ha trovato soluzioni più semplici... beh sono tutto orecchi...!!
Ciao e grazie in anticipo!
E' un idea tappa buchi:D
Se quando schiacci il pulsante invia apri il PDF da stampare grazie allo script, potresti mettere in fondo allo script una redirect all'homepage, o ad una pagina di buona riuscita.
Già fatto... ma non parte!!!
... ho usato questa sintassi: @header ("Location: indirizzo_pagina_di_invio_avvenuto");
Inserito in fondo allo script...
Il problema è che una volta avviata la finestra di download... sembra arrestarsi l'esecuzione di ogni altro script sulla pagina..
Se avete idee... sempre ben accette!
Ciao!
In fondo allo script equivale a dove? :)
Se lo metti dopo
non funzione perché mandi già i dati, quindi gli header inviati in coda non vengono considerati, diverso è il discorso se invece li invii prima, attenzione però che tu generi gli degli header con il l'invio dell'output, quindi potrebbe essere che sovrascrivono i tuoi header precedenti, il consigli che potrei provare a darti è il seguente:
è un pò un workaround ma dovrebbe andare.
Ciao
Marco
--
My blog
Working at @agavee
...uh..!!!
Io lo avevo inserito PRIMA di: $pdf->Output();
Più che altro è oltre le mie possibilità tecniche... magari chiederò una mano a qualche amico programmatore o cercherò di capire nello specifico... come mettere in pratica il tuo consiglio!
Ho segnalto la cosa anche allo sviluppatore di Webform... il quale... pur considerando un bel vantaggio il poter stampare una versione PDF del contenuto... non è intenzionato ad inserirlo nel core... (dice che preferisce lasciare ad altri moduli il compito della stampa... peccato io non ne conosca... che risolvano questo problema!)
Grazie Mille!
;)
Forse ho trovato un bypass... ma ho bisogna di una info...
In pratica devo REDIREZIONALE l'utente verso la pagina di Consultazione del modulo stesso.
In Pratica mi serve che intercetti il numero di Submission e reindirizzi verso quella pagina...
Poi (essendo quella pagina un html con i campi input già validati) procedo alla stampa della pagina usando altri moduli...
...seocndo Voi è fattibile...??
Teoricamente se hai già inviato gli header dovrebbe essere impossibile mandarne altri all'interno della stessa connessione http; quindi o ritorni un pdf oppure un html... Credo che il workaround che ha indicato mavimo sia la soluzione migliore.
Qui trovi la funzione tmpfile() di php che ti permette di fare quanto dice mavimo, con un esempio al quale manca poco per fare ciò che ti serve(una fwrite in modalità binaria di ciò che ti esce dalla classe pdf); Ha anche il vantaggio di pensare lei stessa a generare un file univoco senza bisogno di md5 o ts.
;)
Ciao,
ho trovato questa discussione che fa proprio al caso mio.
Ho anche io la necessità di far avere un pdf della form con tutti i i dati compilati all'utente finale.
Il mio problema (per cui mi picchierete, ma spero non mi abbandonerete)
è che non so maneggiare il php.
Inoltre non ho trovato l'area
"Additional Code"
(forse Dret si riferisce al campo Additional Validation oppure Additional Processing ??)
Ho copiato il codice in Additional Processing.
Ho scaricato nella root di drupal tutto lo script
all'inizio mi dava un errore (non trovava il file logo_pb.png)
ho corretto la destinazione del codice di dret
niente da fare non succede nulla
anzi a me il redirect va una bellezza, solo è il pdf che non viene fuori
Purtroppo non essendo riuscito (mesi fa) a sistemare quella cosetta ho abbandonato il progetto, per una soluzione del tutto diversa.. (senza stampa del pdf).
Io posso dirvi che (a parte qualche errore nel posizionamento dei file o dei percorsi) quella soluzione funziona per gli Web form a singola pagina.
Magari con gli utlimi post inseriti ci ridarò un'occhiata. Avevo anche trovato delle ulteriori varibili da utilizzare per recuperare il ID della pagina di riepilogo che riassume i dati inseriti (ma non ho avuto tempo di vedere se era possibile utilizzarlo in qualche modo).
@fabrizioprocopio: si mi riferivo ad Additional Processing
Ho appena realizzato che nel codice di Dret ci sono cose relative a uno specifico modulo (il suo) e quindi ho compreso che copiare e incollare il codice così com'è non è cosa buona e giusta, anzi, se avesse funzionato sarebbe stato davvero un'incomprensibile miracolo.
Quindi se ho capito bene, a parte la storia del redirect, il codice da inserire nel campo Additional Processing varia a seconda del modulo.
Ho pensato a qualche soluzione, anche con print-friendly, ma nulla niente di sostanzialmente efficace.
Forse l'unica strada potrebbe essere aggiungere un campo al modulo dove lasciare inserire la mail di chi compila e aggiungere del codice (in Additional Processing) in modo da inviare il pdf all'indirizzo mail di quel campo, ossia dell'utente (oltre magari a una copia a quello dell'admin indicato nella Webform mail setting), questa potrebbe essere una strada, ma vado a intuito, senza cognizioni di php, voglio dire non so se si può fare, sicuramente è una stupidaggine.
L'importante insomma sarebbe che l'utente finale abbia una copia, tutto qui.
Ho visto che esiste da poco un modulo in dev che si chiama webform2pdf, ma è per generare pdf per chi è registrato, però per chi compila il form senza essere registrato mi pare non funga.
Vabbè, se qualcuno sa dare istruzioni su una qualche soluzione alternativa sarò infinitamente grato.
ciao ciao
NOVITA' SULLA LA STAMPA IN PDF PER I WEBFORM!
Per tutti coloro che ci sono impazziti dietro, adesso Webform ha la possibilità di integrarsi con il modulo Printer, e-mail and PDF versions.
I particolari in questo post, sul forum ufficiale: http://drupal.org/node/357383
Non l'ho ancora testato ma dovrebbe essere un passo avanti rispetto a prima...
Ciao!
OTTIMAMENTE!
grazie per la soffiata
Onestamente questo Printer, e-mail and PDF versionsmi sembra abbastanza lacunoso.
Puoi applicarlo ai vari content type ma ad esempio non agli ordini (ubercart).
E poi i tempi di generazione sono molto lunghi e spesso da messaggio di errore.
E poi..forse lacuna mia...applicato ai form sembra che generi il pdfdella pagina (vuota) oppure del momento in cui clicchi su versione pdf ma se volessi generare un pdf alla fine della compilazione del form da parte dell'utente?
In un anno è uscito qualche altro modulo per la generazione dei pdf? ( a me serve per i webform e per gli ordini (ubercart))
Prova questo:
Webform2PDF
Non l'ho mai testato ma dovrebbe risolvere il problema che sollevai nel post originale anni fa (poi il progetto andò in soffitta!).
Se lo provi postaci le tue impressioni.
Comunque mi pare che Ubercat avesse una funzione interna per la stampa in PDF delle fatture (invoice). Prova a dare un'occhiata!
Ciao!
Comunque mi pare che Ubercat avesse una funzione interna per la stampa in PDF delle fatture (invoice). Prova a dare un'occhiata!
non sono riuscito ancora a settarla questa funzione...
tu hai ubercart installato? mi potresti guidare?
No, ho solo dei ricordi di un test fatto circa un anno e mezzo fa... (un sito di prova)
Se non sbaglio alla fine della procedura di acquisto ti faceva scaricare (o visualizzare) un pdf con i dati relativi.
Potrei anche sbagliare ma era un test per Ubercat su sito multilingua e quindi erano installati solo moduli dedicati a queste funzioni, senza altre aggiunte.
Ricordo che tra l'altro veniva stampato il logo del sito (quella impostato nelle Informazioni del sito) in alto a sinistra sulla "fattura".
... ho dato un'occhiata: e questo tipo conferma, rispondendo al medesimo quesito:
http://drupal.org/node/505416#comment-1757740
Prova a guardare meglio!
;)
ma sicuramente ubercart ha la funzione di stampa pdf. la domanda cui rispondere non è se ce l'abbia o meno, è: come si configura? per favore? grazie.
se poi uno non lo sa pazienza.