[PHP] modificare un .rtf

alankanz

Lupacchiotto
Membro dello Staff
MOD
18 Giu 2014
147
5
18
Roma
E' da un pò che sto cercando di fare questo script per modificare un file .rtf ma mi da sempre problemi con il codice
PHP:
$esploso=explode("<TESTO>",$contenuto);

Dovrebbero uscire 3 variabili. Invece mi da errore all'Offset [1]

il file .rtf è strutturato così
Codice:
HEADER

<TESTO>

<NOME> 
<VIA> 
<CIVICO> 
<CAP> 
<COMUNE> 
<PROVINCIA> 
<PRATICA>
<COGNOME> 
<LOCALITA>



<TESTO>



Footer

ecco lo script intero, le variabili $_POST le trasferisci già controllato!

PHP:
if($_POST)
{
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$via = $_POST['via'];
$civico = $_POST['civico'];
$cap = $_POST['cap'];
$comune = $_POST['comune'];
$provincia = $_POST['provincia'];
$pratica = $_POST['pratica'];
$localita = $_POST['localita'];



$file="docs.rtf";

# Definiamo il nome del file da utilizzare


$fp=fopen($file,"rt");

# Apriamo un puntatore al file


$contenuto=fread($fp,filesize($file));

# Ne leggiamo il contenuto


$cerca=array("<NOME>","<VIA>","<CIVICO>","<CAP>","<COMUNE>","<PROVINCIA>","<PRATICA>","<COGNOME>","<LOCALITA>");

# Definiamo quali sono i tag da andare a cercare per sostituirli


$sosti=array($nome,$via,$civico,$cap,$comune,$provincia,$pratica,$cognome,$localita);

# I dati da usare per sostituirli

# Potrebbe essere il risultato di una query SQL


$contenuto_finale="";

# Definiamo la variabile che conterra il contenuto finale



$esploso=explode("<TESTO>",$contenuto);

# Esplodiamo l'intero file RTF per la stringa <BLABLABLA>



$header=$esploso[0];

# Cosi, in posizione 0 abbiamo tutto l'header RTF



$testo=$esploso[1];

# Qua abbiamo il contenuto dell'RTF



$footer=$esploso[2];

# E qui abbiamo la chiusura dell'RTF




	

	$sostituzione=str_replace($cerca,$sosti,$testo);

       # Andiamo a sostituire i tag con i valori reali



	$contenuto_finale.=$sostituzione;

       # Aggiungiamo una pagina nuova al nostro file "page" e il tag RTF per farlo


# Eseguiamo il ciclo 5 volte (in realta bisognerebbe fare un foreach sull'array, ma questo e solo un esempio



header('Content-Type: application/rtf');

# Mandiamo al browser un header che indica il tipo di file che stiamo inviando



header("Content-Disposition: attachment; filename=FTV_015802_" . $cognome . "_" . $pratica . ".doc");

# Diciamogli di scaricarselo e diamogli un nome, il .doc e per ingannare l'operatore che si crede di aver scaricato un vero doc di Word... 



echo $header.$contenuto_finale.$footer;

# Buttiamo fuori l'output, concatenando header, contenuto e footer

}
else
{ exit;}
 
Ok soluzione trovata!

Il problema era che il file non lo prendeva in formato RTF ma in DOC =)

Grazie lo stesso

P.S. il codice funziona... se a qualcuno serve...
 

Discussioni simili