Stampare con rtf

di il
3 risposte

Stampare con rtf

Ciao ragazzi, qualche tempo fa avevo fatto un programmino che:

caricava un "template" in formato rtf, all'interno del file rtf c'erano dei "tag", questi tag venivano sostituiti da dei valori ricavati da una query, ed infine salvava l'rtf cosi' creato.

ora mi trovo a dover rifare una cosa simile, ma non riesco a riprodurla (sono a digiuno davvero da troppo tempo mannaggia).

A parte che ho creato un "template" di prova rtf usando openoffice e se ci metto dentro tabelle o immagini mi zappa tutto e mi salva solo il testo, io mi ricordo benissimo che nei vecchi template che usavo c'erano sia tabelle che immagini.

per aprire il file rtf sto usando una tstringlist, leggo il file e vado a sostituire i tag con dei valori.... se il file è solamente testuale va bene, ma come posso fare per inserire tabelle, formattazione, immagini?..

Eventualmente per poi salvare questo rtf in pdf come potrei fare?

Vi ringrazio.

3 Risposte

  • Re: Stampare con rtf

    - leggi tutto il file rtf in una stringa lunga
    - sostituisci i tag con i valori
    - salva la stringa in un altro file

    Pseudo codice:
      Let esi=FileRead$("Template.rtf")
      Let esi=Replace$(esi, "$date$", Date$)
      Let esi=Replace$(esi, "$titolo1$", "Il primo titolo")
      Let esi=Replace$(esi, "$titolo2$", "Il secondo titolo")
      Let esi=Replace$(esi, "$titolo3$", "Il terzo titolo")
      FileWrite "test.rtf", esi
    Stampare è facile: Apri il file in un editore che capisce rtf (WordPad, ...) e stampa con una "stampante pdf" come "Print to Pdf".

    P.S.: Attenzione con i tags nelle tabelle. Un "+" all'inizio ed alla fine sembra funzionare:
    Questo file è stato creato il +date+
    (-------- inizio tabella - non si puo' rappresentare qui)
    +titolo1+ +titolo2+ +titolo3+ +titolo4+ +titolo5+
    +v11+ +v12+ +v13+ +v14+ +v15+
    +v21+ +v22+ +v23+ +v24+ +v25+
    (-------- fine tabella)

    L'ho testato e funziona, ma la stessa tabella fatta con, per esempio, $titolo2$ o #titolo2# potrebbe fallire perché ci sono versioni di RichEd20.dll che salvano male, cioè invece di \cell $titolo2$ scrivono \cell$titolo2$ senza spazio. Un po' assurdo ma la RichEd20.dll esiste in tante versioni ed è piena di bugs.
  • Re: Stampare con rtf

    yaren ha scritto:


    per aprire il file rtf sto usando una tstringlist, leggo il file e vado a sostituire i tag con dei valori.... se il file è solamente testuale va bene, ma come posso fare per inserire tabelle, formattazione, immagini?..

    Eventualmente per poi salvare questo rtf in pdf come potrei fare?
    Diventano tutti testuali (i dati binari), quali le immagini, dentro gli RTF.
    Puoi usare dei componenti (a pagamento) che rendono queste operazioni più facili.
    Oppure puoi utilizzare - se disponibile - Word ad esempio, "automatandolo" con comandi OLE (comobj).
    In questo caso (dalla versione 2007) puoi anche salvare direttamente in formato PDF.

    In assenza di questo fare il "rendering" (di un documento RTF) per poi stamparlo non è banale per nulla, puoi tentare con l'intercettazione di una stampante PDF (es. PDFCreator) supponendo di avere un qualche componente in grado di mostrare correttamente gli RTF.
    Quelli "base" di delphi, tipicamente, non lo fanno (mi riferisco a testi molto complessi, non a RTF con neretto e poco più)
  • Re: Stampare con rtf

    +m2+ ha scritto:


    Diventano tutti testuali (i dati binari), quali le immagini, dentro gli RTF.
    Infatti, RTF è un formato testuale, quindi non ci sono dati binari.

    Come scritto sopra, l'ho testato (oggi, ma anche 20 anni fa, con MS Word) e funziona alla grande.
Devi accedere o registrarti per scrivere nel forum
3 risposte