Codejock und RTF

Von Ausgaben mit der Gra-Engine über Generatoren bis zum Export in diversen Formaten

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Codejock und RTF

Beitrag von AUGE_OHR »

hi,

Wir haben ja XbpRTF() womit auch der Demo Editor arbeitet.

Wenn ich mir nun eine Vorlage mit Platzhalter für die Adresse mache wird ja an der Position wo der Platzhalter war die neue Adresse eingesetzt.

Nun frage ich mich wie ich das mit den Artikel Positionen mache und wie ich "freien Text" in die Vorlage bekomme ... oder alles "anhängen" ?

Frage : kann ich was an eine RTF Datei anhängen ? COPY TEXT1.RTF + TEXT2.RTF TEXT3.RTF ?

... und wo finde ich eine gute Seite mit der Beschreibung von RFT "Format Befehle" ( /TAB /PAGE ...)

Nun zu Codejock : in den Commandbar gibt es ja "Print" und "Preview".
mit CreateRichEditPrintView( RTF ) Methode kann ich den RTF String "einlesen" und dann mit PrintPreview() drucken oder Preview ... hat das jemand schon gemacht ?

Code: Alles auswählen

[Displays a RTF document in a print preview dialog (Visual Basic)] 

Private Sub mnuPreviewRTFPage_Click()
    Dim frmPreview As New frmPreview

    Dim FreeF As Integer, sFile As String, sLayout As String
    Dim Text As String

    On Error Resume Next:

    'XML string will be loaded from the file.
    sFile = App.Path & "\PrintPreview.rtf"
    FreeF = FreeFile
    Text = Space(FileLen(sFile))
    Open sFile For Binary As #FreeF
    Get #FreeF, , Text
    Close #FreeF
    On Error GoTo 0

    frmPreview.PrintPreview.PrintView = frmPreview.PrintPreview.CreateRichEditPrintView(Text)
    frmPreview.Show vbModal

End Sub 
ich verstehe hier
Open sFile For Binary As #FreeF
Get #FreeF, , Text
Close #FreeF
nicht was das bedeuten soll.
gruss by OHR
Jimmy
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Codejock und RTF

Beitrag von Martin Altmann »

Moin Jimmy,
genauso wenig, wie HTML-Dateien kannst Du RTF-Dateien mittels COPY zusammenmauscheln!
Spezifikation findest Du hier: http://support.microsoft.com/?scid=kb;d ... 52&sid=256
Hatte ich schon mal hier im Forum gepostet.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Codejock und RTF

Beitrag von AUGE_OHR »

hi,
Martin Altmann hat geschrieben:genauso wenig, wie HTML-Dateien kannst Du RTF-Dateien mittels COPY zusammenmauscheln!
hm ... schade ...
Martin Altmann hat geschrieben:Spezifikation findest Du hier: http://support.microsoft.com/?scid=kb;d ... 52&sid=256
Hatte ich schon mal hier im Forum gepostet.
ich habe die Version 1.91 gefunden http://www.microsoft.com/downloads/deta ... n#filelist
die wohl für die 2007 gilt, danke.
gruss by OHR
Jimmy
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Codejock und RTF

Beitrag von Martin Altmann »

Nimm lieber die andere - ist auch für ältere Versionen gültig!

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Codejock und RTF

Beitrag von AUGE_OHR »

hi,

Code: Alles auswählen

METHOD VORTRAG:PrintRTF(cDatei)
LOCAL nHandle
LOCAL nSize
LOCAL nBytes
LOCAL cBuffer
LOCAL aDir    := Directory(cDatei)

   IF .NOT. FILE(cDatei)
      MsgBox("Datei "+cDatei+" nicht gefunden")
      RETURN self
   ENDIF
   //
   // Grösse der datei
   //
   nSize   := aDir[1, F_SIZE ]
   //
   // cBuffer vorbelegen
   //
   cBuffer := SPACE(nSize)

   //
   // öffne Datei
   //
   nHandle := FOpen(cDatei, FO_READWRITE+FO_DENYWRITE)
   IF FError() <> 0
      MsgBox("Fehler beim Öffnen der Datei:"+STR( FError() ))
   ENDIF
   //
   // lese RTF String nach cBuffer
   //
   nBytes := FRead(nHandle, @cBuffer, nSize)
   FClose( nHandle )

   ::oPrintView:AboutBox()
   ::oPrintView:PrintView := ::oPrintView:CreateRichEditPrintView(cBuffer)
   ::oPrintView:Show()
ich bekomme aber leider nur ein leeres Blatt ... was mache ich verkehrt ?

Wenn ich einen Text aus Word 2007 als RTF abspeicher ist der 30KB gross, aus dem "Editor" aber nur 134 Byte ... kann das daran liegen ?
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Codejock und RTF

Beitrag von brandelh »

Hi,

das mit dem "Zusammenmauscheln" ist genau die richtige Vorgehensweise ... wenn man es richtig macht ;-)

Martin hat Recht wenn er sagt, dass einfaches Kopieren nicht reicht, schließlich will RTF wie auch HTML Anfangs und Endetags.
Aber wie ich es mit Excel XML Files gemacht habe, kannst du das auch mit RTF machen.
Erstelle in Wordpad oder Word (das macht wohl aber viel zusätzlich ?) eine Textvorlage, in die du Platzhalter als
einfachen Text reinschreibst:
{AbsenderZeile1}
{AbsenderZeile2}



{Anschrift1}
...
{Betreff}
...
{Fließtext}
...
Das speicherst du ab und liest es mit Memoread() ein.
Nun braucht du nur die einfachen Texte tauschen:

Code: Alles auswählen

cRTF := memoread(cVorlageDatei)
cRTF := strTran(cRTF,"{Anschrift1}",cAnschrift1)
...
Nur wenn im Text fett oder so erscheinen soll, musst du das natürlich in RTF Tags packen.
Hier würde ich im Text die B-Codes von hier verwenden, die sind leichter verständlich:

Code: Alles auswählen

FETT: [b]fett[/b]
unterstreichen: [u]unterstreichen[/u] etc.
Wenn bei RTF auch einfach ein aus geschaltet wird, direkt tauschen ...
cRTF := strTran(cRTF,"[b]",cFettEin)
cRTF := strTran(cRTF,"[/b]",cFettAus)
ich meine aber, dass RTF das in einen Tag packt, den musst du dann
halt erzeugen ... Die Tags könnte natürlich auch ein User im MLE eingegeben haben ;-)

Eventuell musst du auch die FETTEN Textteile rausholen und in einen Tag integrieren.
Dazu musst du halt wissen, wie RTF das braucht. Das steht im LINK oder einfacher
mach dazu am Besten ein FETTES Beispielwort in der Vorlage und schreibe ab :D

Auf diese Art und Weise füllen meine CGI Programme auch die HTML Seiten ... das geht wunderbar ;-)
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Codejock und RTF

Beitrag von AUGE_OHR »

hi,
AUGE_OHR hat geschrieben:ich bekomme aber leider nur ein leeres Blatt ... was mache ich verkehrt ?
Tja wieder mal nicht daran gedacht das die Codejock activeX "im eigenen" Thread laufen und ich den Event an die Main Loop schicken muss #-o

@Hubert : Danke für die Ideen, ich werde es mal in der Richtung probieren
gruss by OHR
Jimmy
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Codejock und RTF

Beitrag von Koverhage »

Hallo Jimmy,

Hubert hat Recht, man kann alles anhängen.

Hier eine Funktion wo der Nutzer bis zu 6 Textbausteine (RTF Dateien) auswählen kann, die dann zusammgeführt werden.
Hierbei wichtig, das nur die letzten 4 Zeichen aus der RTF entfernt werden müssen, an die ein neues Dokument angefügt werden soll.

cData := ""
for i:= 1 to 6
if !empty(m_briefarr)
if i > 1 .and. i < 6
if !empty(m_briefarr[i+1])
nCurrLength := len(cData)
if cData[nCurrLength-3] = "}"
cData := substr(cData,1,nCurrLength-4)
endif
endif
endif
cData += TagProcess( trim(m_briefarr) )
endif
next
Gruß
Klaus
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Codejock und RTF

Beitrag von AUGE_OHR »

hi,

erstmal danke für eure Tips und nun die nächste Frage : ist das "einbinden" eines BMP (Logo) auch noch RTF ?

Ich habe es mal mit Write (Wordpad) versucht und die entstandene RTF konnte Codejock nicht als PreView anzeigen.
In dem eingelesenen String sah ich eine Menge Zeichen vor "{\rtf1\ansi\ansicpg1252" was wohl den Anfang der RTF darstellt ?

Nun ist es in der PreView ja egal, aber beim Drucken muss das Logo wieder dabei sein.

Frage : kann man einen "Platzhalter" auch für das Logo verwenden und wenn ja wie ?
gruss by OHR
Jimmy
Benutzeravatar
Lewi
1000 working lines a day
1000 working lines a day
Beiträge: 830
Registriert: Di, 07. Feb 2006 14:10
Wohnort: Hamburg
Danksagung erhalten: 2 Mal

Re: Codejock und RTF

Beitrag von Lewi »

Hi Jimmy,
das mit dem "Platzhalter" für eine Bitmap innerhalb eines RTF-Files wird schwierig. Das eigentlich Bitmap ist nämlich Bestandteil des RTF`s befindet sich am File-Ende.

Vor Jahren habe ich mit Thema herum experimentiert und bin dann auf des HTML-Format umgestiegen. Das Einfügen von Zeilen und Bildern war dann nicht mehr das Problem.

Aber Du hast doch L&L im Einsatz. Warum erzeugst nicht einen Report mit den notwenigen Output, indem Du nach RTF exportierst? Dieses Verfahren nutze ich heute im Zusammenhang mit FRAX.

Viele Grüße
Olaf
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Codejock und RTF

Beitrag von AUGE_OHR »

Lewi hat geschrieben:Aber Du hast doch L&L im Einsatz. Warum erzeugst nicht einen Report mit den notwenigen Output, indem Du nach RTF exportierst? Dieses Verfahren nutze ich heute im Zusammenhang mit FRAX.
oh Mann, schon wieder eine Idee auf die ich gar nicht gekommen bin #-o
Danke, das ist natürlich das "einfachste" und der Kunde "könnte" sogar sein "Briefpapier" selbst ändern =D>
gruss by OHR
Jimmy
Antworten