Sempre a proposito di Rtf e mail merge

Moderator: Enrico Maria Giordano

Sempre a proposito di Rtf e mail merge

Postby Marco Turco » Mon Feb 06, 2006 6:05 pm

Salve,
una curiosità:
in una mia applicazione effettuo un mail merge di un template RTF con un indirizzario.

Per fare questo ho creato nel testo RTF dei comuni campi di testo XXDATO01XX, XXDATO02XX ecc. che poi vadi a sostituire con i dati dell'indirizzario. In pratica apro il file RTF con Fopen, lo carico in memoria e sostituisco i campi XX.

Quello che vorrei sapere se questo sistema un poco "brutale" che adotto è l'unica soluzione o ci sono soluzioni più sofisticate.
Ho però la necessità di fare un mailmerge indipendentemente dalla presenza di Word quindi non posso utilizzare OLE.

Saluti

Marco
User avatar
Marco Turco
 
Posts: 858
Joined: Fri Oct 07, 2005 12:00 pm
Location: London

Re: Sempre a proposito di Rtf e mail merge

Postby Enrico Maria Giordano » Mon Feb 06, 2006 7:03 pm

Personalmente faccio così anche con Word. Credo sia il sistema più versatile e portabile.

EMG
User avatar
Enrico Maria Giordano
 
Posts: 8315
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

Postby Silvio » Mon Feb 06, 2006 11:52 pm

pero io sono sicuro esisteva velle versioni antecedenti di fw una classe rtf che aveva un metodo merge ma purtroppo non trovo quella versione ...ne ho trovate altre tra cui dbftortf per esempio ma non quella
Vi parlo della classe di Thomas R. Marchione vi ricordate ?
Questa classe ha per esempio anche la possibilità di creare tabelle con rtf
User avatar
Silvio
 
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Postby Marco Turco » Tue Feb 07, 2006 8:23 am

Te la sto inviando al tuo indirizzo di posta elettronica.
Non l'ho però mai usata e quindi non ti so dare indicazioni sul funzionamento

Ciao

Marco
User avatar
Marco Turco
 
Posts: 858
Joined: Fri Oct 07, 2005 12:00 pm
Location: London

Postby Marco Turco » Tue Feb 07, 2006 8:29 am

X Emg:

Bene,
io ho però lo strano problema che ogni tanto il campo mi viene "spezzato" da Word in fase di memorizzazione se l'utente finale modifica il template che gli ho fornito.

In pratica se il mio template riporta originariamente il campo tipo:

\par XXDATO01XX

in alcuni casi Word me lo spezza sul tipo

\par XXDATO01
XX

Dal punto di vista visivo sul documento non ci sono variazioni ma è evidente che così non riesco a sostituire il campo con l'indirizzo perché non trovo il campo.

Devo forse prevedere il campo XXDATO01XX con un nome particolare oppure tra virgolette o altro ?

Marco
User avatar
Marco Turco
 
Posts: 858
Joined: Fri Oct 07, 2005 12:00 pm
Location: London

Postby Enrico Maria Giordano » Tue Feb 07, 2006 8:36 am

Probabilmente fai una normale sostituzione di testo invece di utilizzare le API di Word:

Code: Select all  Expand view
FUNCTION WORDREPLACE( oSel, cSrc, cRpl )

    LOCAL lOk

    oSel:Start = 0; oSel:End = -1

    lOk = oSel:Find:Execute( cSrc )

    IF lOk; oSel:Range:Text = cRpl; ENDIF

    RETURN lOk


EMG
User avatar
Enrico Maria Giordano
 
Posts: 8315
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

Postby fasi » Tue Feb 07, 2006 12:23 pm

Marco,
quella versione l'ho anch'io ...però esiste un altra versione dove c'era rtfmerge () chge dato un file .rtf e un database ti creava automaticamente il nuovo file con i campi modificati....
Poi se ricordate bene è stata la volta di Tedit e quindi tutti hanno lasciato perdere questo rtf e poi siamo passati al word con ole ....adesso poichè linares ha rifatto la classe Rtf potremmo usare questa , anche se non capisco come mai nel 2002 Linares,Ortis e Pulpon hanno fatto una classe rtf con un Richpad dove cera di tutto e poi adesso nel 20006 Linares ha rifatto una psuda classe rtf senza molte cose rispetto a quella del 2002 come per esempio l'anteprima di stampa a proposito di quest'ultima io ho rifatto l'anteprima grazie ad un fwuser xche mi ha dato la pagina web ... a me serviva una funzione per strasformare il rtf in emf e ci sono riuscito
appena posso ( i tecnici mi devono rimettere la linea telefonica) vi do il source. anche se a me non funzionano i margini e non saprei come settarli ...
fasi
 

Postby fasi » Tue Feb 07, 2006 12:25 pm

e poi possiamo mettere questa funzione di emg come un methodo Wordreplace() nella classe che vi sembra l'idea ...
fasi
 

Postby Marco Turco » Tue Feb 07, 2006 2:05 pm

Probabilmente ci sono stati problemi relativi alla proprietà intellettuale dei sorgenti, è per questo motivo che la classe è stata riscritta da Antonio.
Non ho l'ultima versione delle FW ma credo cha Antonio abbia previsto anche il preview del modello rtf in quanto mi sembra abbia implementato metodi aggiuntivi nella classe tprinter proprio per gestire margini ed altro.

Per quanto riguarda l'esempio di Emg, considera che è utilizzabile però solo in presenza di Office installato in quanto opera via Ole.

Marco
User avatar
Marco Turco
 
Posts: 858
Joined: Fri Oct 07, 2005 12:00 pm
Location: London

Postby Enrico Maria Giordano » Tue Feb 07, 2006 2:12 pm

Non sai per quanti anni mi sono battuto cercando inutilmente di spiegare quanto fosse meglio utilizzare una tecnica che non richiedesse la presenza di Word o Excel oppure perché sarebbe preferibile un browser diverso da IE o un programma di posta elettronica diverso da OE.

Be', personalmente ho finito di combattere e preferisco sfruttare almeno le caratteristiche positive del nemico. :-)

EMG
User avatar
Enrico Maria Giordano
 
Posts: 8315
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

Postby Marco Turco » Tue Feb 07, 2006 2:18 pm

Concordo con la tua analisi.

Il problema è che una percentuale non indifferente dei miei clienti è passata ad OpenOffice 2.0. Sia perché è gratuito (immagina un cliente con una rete di 5-8 computer quanto dovrebbe spendere per licenziare Office) sia perché lo fornisco direttamente sul CD del mio prodotto in modo che sia immediatamente installabile sia ancora perché con un click convertono il documento in PDF senza dover installare un prodotto apposito.

Il problema principale di OpenOffice è il filtro RTF (che è una ciofeca e non gestisce documenti completti con caselle di testo ed immagini) e il supporto OLE che è diverso da quello di Word.

Marco
User avatar
Marco Turco
 
Posts: 858
Joined: Fri Oct 07, 2005 12:00 pm
Location: London

Postby Enrico Maria Giordano » Tue Feb 07, 2006 2:22 pm

Marco Turco wrote:sia perché lo fornisco direttamente sul CD del mio prodotto in modo che sia immediatamente installabile


Be', ti sei dato la zappa sui piedi, ora lavora! :-)

EMG
User avatar
Enrico Maria Giordano
 
Posts: 8315
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

Postby Silvio » Tue Feb 07, 2006 5:05 pm

Per Marco

La versione attuale di Linares non è prevista di anteprima ....
l'anteprima io l'ho rifatta ma credo che non vada bene perchè è una classe che riprende la classe rpreview , però funziona, ha anche una funzione in c che trsforma il rtf in emf ...però a me sembra una ciofeca anche perchè quando visualizzo il rtf le scritte sono molto vicine alla fine del foglio , insomma non so come settare i margini, tu dici che c'è la funzione ma nella classe rtf di linares o di quella di marchione ?
Sarebbe interessante rifare un .....( lo sparata grossa)....OpenRtfPad fatto con la classe di linares a me sembra un 'idea utile non trovate ...
User avatar
Silvio
 
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Postby Silvio » Tue Feb 07, 2006 5:13 pm

User avatar
Silvio
 
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Postby Marco Turco » Wed Feb 08, 2006 12:55 pm

Per Silvio:

perché non utilizzi per l'anteprima di un documento RTF l'anteprima di Word ? Puoi attiviarla via OLE.

Marco
User avatar
Marco Turco
 
Posts: 858
Joined: Fri Oct 07, 2005 12:00 pm
Location: London

Next

Return to All products support

Who is online

Users browsing this forum: No registered users and 16 guests