RTF drucken

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

Moderator: Moderatoren

Antworten
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

RTF drucken

Beitrag von Rudolf »

Hallo,
ich möchte in meiner Anwendung RTF Texte für Angebote integrieren, soweit kein Problem. Beim Ausdruck jedoch weiss ich nicht wann ich einen Seitenumbruch machen kann. Die Formulare haben alle einen Fussbereich, bevor dieser erreicht wird muss die neue Seite begonnen werden. Wie kann ich beim Drucken feststellen, wieviele Zeilen der Text hat ? Ich muss ja den Textblock dann auf 2 Seiten aufteilen. Ich verwende eXPress++, da ist auch nichts dafür vorgesehen. In der RTF Klasse habe ich auch nichts gefunden.
Grüsse
Rudolf
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: RTF drucken

Beitrag von Rolf Ramacher »

Hi Rudolf

ich mache das mit RTF folgendermaßen:

es gibt eine Datei im format RTF als vorlage. diese lese ich ein mit memoread(). Dann werden die Platzhalter mit strtran ersetzt.
die Datei wird mit einem neuen Namen gespeichert und dann an word mit autom. Druck übergeben. Word macht den Seitenumbruch dann natürlich automatisch.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: RTF drucken

Beitrag von Rudolf »

Hallo Rolf,
leider sind es komplexe Formulare in denen nur RTF Textblöcke eingefügt werden sollen. Die kann ich nur zeilenweise direkt drucken.
Grüsse
Rudolf
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: RTF drucken

Beitrag von UliTs »

Hallo Rudolf,

ich habe die PresSpace-Klasse um Rtf-Objekte erweitert. Dabei gebe ich Rechtecke an, in denen der Rtf-Text gedruckt wird. Den Rest drumherum drucke ich "konventionell".
Bei der Eingabe der Rtf-Texte lasse ich nur eine vorgebbare Anzahl an Zeilen zu. Damit stelle ich sicher, das der Text in die Rechtecke paßt (sofern nicht zu große Schriften ausgewählt werden).

Würde Dir so etwas helfen?

Uli

P.S.
Das Ganze war nicht so einfach, weil vor ein paar Jahren die Rtf-Klasse noch einige Fehler enthielt (insbesondere beim Umrechnen der verschiedenen Koordinatensysteme.
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: RTF drucken

Beitrag von Rudolf »

Hallo Uli
bei mir sind die Texte unterschiedlich lang, ist immer ein Angebotstext zu einem Artikel dazu. Daher brauche ich z.B: eine Funktion der ich das RTF Objekt mit der zu druckenden Breite übergebe und die resultierende Höhe bekomme. Mich wundert wie es andere machen, ohne zu wissen wie groß ein Text ist kann ich ihn ja nicht drucken.
Grüsse
Rudolf
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: RTF drucken

Beitrag von UliTs »

Hallo Rudolf,

Wenn Du beliebigen Text bzw. beliebig viele Textzeilen zulassen willst, kannst Du ja das Rechteck, in dem der RTF-Text gedruckt werden soll entsprechend anpassen.
Wird denn der Rtf-Text mit xBase editiert und geschrieben? Dann kannst Du problemlos die Zeilenanzahl bestimmen. Wenn mit unterschiedlichen Schriftgrößen gearbeitet wird, reicht dies (natürlich) nicht aus und dann wird es schwieriger wegen der Probleme mit den verschiedenen Koordinatensystemen.

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: RTF drucken

Beitrag von Rudolf »

Hallo Uli,
der Text wird mit XBase++ geschrieben, aber ich kann nicht vorher schon vorgeben wie gross er sein soll. Der Ausdruck ist unabhängig vom editieren. Ich habe schon im RTF Objekt nachgeschaut, aber keine Variable für die Anzahl der Zeilen gefunden. Sonst könnte ich die Breite beim Editieren fix vorgeben die resultierende Höhe des Textes irgendwo mitspeichern.
Grüsse
Rudolf
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: RTF drucken

Beitrag von brandelh »

Hallo,

ich habe vor kurzem ein komplexes Rundschreiben an einige hundert Adressaten mit verschiedenen Inhalten bestücken müssen.

ActiveX war mir zu umständlich und langsam. Ich erstellte in Word ein RTF Dokument mit einer Tabelle (unsichtbar wegen der Formatierung)
und Platzhalter ( {Variable} ) die ich z.b. auch in Word mit FETT markiert habe. memoread() und strTran() funktionierten beim ersten Aufruf ganz gut.
Allerdings wollte ich einiges ändern und hatte auch einen Tippfehler in einer Variablen. Beim zweiten Durchgang wurden dann einige Variablen nicht mehr ausgefüllt und beim Nachsehen stellte ich fest, dass Word die {Variablen} zerrissen hat in viele kryptische Texte ...

Dann habe ich das Gleiche mit XML gemacht und siehe da es funktionierte !

Es könnte sein, dass man die Vorlage wie ich es in Excel XML gemacht habe vorher aufspalten muss, oder sich den Aufbau abkupfern muss aber danach kann man diese Texte super manipulieren (bei Excel musste man den benutzten Bereich an einer Stelle eintragen) ich vermute dass auch
mehrere selbst eingefügte syntaktisch richtige Textbausteine automatisch durchformartiert werden.

Einen Versuch ist es Wert :wink:
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: RTF drucken

Beitrag von AUGE_OHR »

Rudolf hat geschrieben:ich möchte in meiner Anwendung RTF Texte ...
In der RTF Klasse habe ich auch nichts gefunden.
aber genau das ist doch die Class mit der du arbeiten möchtest ?

also mach die doch mal eine "Statuszeile" wo du folgenden Information verwendest :

Code: Alles auswählen

// SelChange event
//
// Occurs when the current selection of text in the RichTextBox control has changed 
// or the insertion point has moved.
//
   ::oRtf:SelChange := { || ::Refresh() }

METHOD LiefClass:Refresh()
LOCAL xTmp
LOCAL nCol
LOCAL nLine
//
// Anzeigen der aktuellen Zeile und Spalte in der Statuszeile
//
nLine := ::oRTF:GetLineFromChar( ::oRTF:SelStart )
nCol  := ::oRTF:SelStart - ::oRTF:GetLineStart( nLine )

xTmp  := "Zeile: " + LTrim( Str(nLine +1) ) + ;
         "   Spalte: " + LTrim( Str(nCol +1) )

::oCbarS:StatusBar:SetPaneText(0,xTmp)
wenn du nun weiter im RichTX32.OCX "forscht" wirst du weitere Methoden und Property finden die nicht in der RTF Class von Alaska verwendet werden.

für dein Project würde ich schon bei der "Eingabe" die "Parameter" festlegen : Margin, Header, Footer werden durch das "Fenster" (nicht resizebar !) "festgelegt".

Diese "Parameter" nimmst du dann auch zum drucken, über das RichTX32.OCX !
die Methode Rtf:Print() kann über den "normalen" Rtf:SelPrint( oPrinter:GetHDC() ) oder über die PrintWYSIWYG() Methode drucken.

du kannst aber nicht "gleichzeitig" aus Xbase++ "Presspace" und über das activeX drucken, also muss du den die 2x XbpPrinter() "umschalten".

wenn du nun die PrintWYSIWYG() Methode nimmst, würde ich aus den LOCAL

Code: Alles auswählen

LOCAL nLeftMargin,  nTopMargin
LOCAL nRightMargin, nBottomMargin
Parameter machen womit du die Position festlegst.
gruss by OHR
Jimmy
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: RTF drucken

Beitrag von Rudolf »

Hallo Jimmy,
vielen Dank für den Tip, ich glaube mit den Infos kann ich beim Editieren schon die Zeilenanzahl auslesen. Das dürfte reichen um die Grösse des Ausdruckes zu bestimmen. Die Breite kann ich fix vorgeben, das ist kein Problem. Ich verwendet eXPress++ zum Drucken, da gibt es die Funktion @ <nSrow>, <nScol> [, <nErow>, <nEcol> ] DCPRINT RTF <cRtf> [PRINTER <oPrinter>] [PIXEL] [WHEN <bWhen>]

Grüsse
Rudolf
Antworten