Sempre a proposito di Rtf e mail merge

Moderator: Enrico Maria Giordano

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

Sempre a proposito di Rtf e mail merge

Post by Marco Turco »

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
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Re: Sempre a proposito di Rtf e mail merge

Post by Enrico Maria Giordano »

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

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

Post by Silvio »

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
Marco Turco
Posts: 858
Joined: Fri Oct 07, 2005 12:00 pm
Location: London
Contact:

Post by Marco Turco »

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
Contact:

Post by Marco Turco »

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
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Post by Enrico Maria Giordano »

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

Code: Select all

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
fasi

Post by fasi »

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

Post by fasi »

e poi possiamo mettere questa funzione di emg come un methodo Wordreplace() nella classe che vi sembra l'idea ...
User avatar
Marco Turco
Posts: 858
Joined: Fri Oct 07, 2005 12:00 pm
Location: London
Contact:

Post by Marco Turco »

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
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Post by Enrico Maria Giordano »

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
Marco Turco
Posts: 858
Joined: Fri Oct 07, 2005 12:00 pm
Location: London
Contact:

Post by Marco Turco »

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
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Post by Enrico Maria Giordano »

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
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Post by Silvio »

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

Post by Silvio »

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

Post by Marco Turco »

Per Silvio:

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

Marco
Post Reply