Chemische Formel drucken

ich habe eine Formel als RTF in der Datenbank gespeichert.
Eine Textarea zeigt das an mit TextArea.RTFDataMBS=r.field(“formel”).StringValue

Aber wie drucke ich das nun aus mit Drawstring?
Ich habe mir schon überlegt die Formel in ein Bild zu malen, aber wie?

Ich denke, du müsstest dazu nur StyledTextPrinter bemühen – zumindest, wenn dein Projekt sich auf macOS und Windows beschränkt: http://developer.xojo.com/styledtextprinter

Dazu müsste ich den RTF Text aber erst in Styledtext umwandeln…

Kann textutil von rtf nach html umwandeln? Umgekehrt wei ich, da das geht. Html drucken wre dann einfach.

It boggles the mind: das funzt tatschlich. Mit einer beliebigen rtf-Datei:

textutil -convert html /Users/beatrixwillius/Desktop/\\ About\\ this\\ library.rtf -output /Users/beatrixwillius/Desktop/\\ About\\ this\\ library.html

http://developer.xojo.com/styledtext:

myStyledText.RTFData = r.field("formel").StringValue

Ja, schon, jetzt habe ich die Formel in StyledText, aber zu StyledTextPrinter steht in der Doku:

“Used to print styled text stored in a TextArea.”

Ich kann den Umweg über eine unsichtbare TextArea machen, das geht auch, aber es muss doch noch einen anderen Weg geben?

Ich erinner mich, dass es diese Diskussion schon öfters in den vergangen Jahren gab.
Die Problematik StyledText oder RTF Text im Zusammenhang mit DrawString zu drucken, wäre eine tolle Lösung.

Also: g.SuperDrawString RTFtext,x,y,breite

Das könnte ich in allen meinen Apps gut gebrauchen!

Lieder tut es das nicht:

TextArea1.RTFDataMBS=r.field("formel").StringValue Dim stp as StyledTextPrinter stp=TextArea1.styledTextPrinter(g,200) stp.DrawBlock x,y-9,zellenbreite

Das sieht auf dem Bildschirm gut aus:

Im Druck dann leider nicht mehr:

Hast Du wirklich mehr erwartet? Hast Du mal meine Lösung ausprobiert?

Ehrlich gesagt, ich weiß nicht so genau wie im Code umsetzen…

Das ist ein wenig aufwendiger, das ist richtig. Aber ich würde erst einmal im Terminal den Befehl ausprobieren.

Wenn das funktioniert:

  • rtf in Datei schreiben.
  • Mit Shell in Html umwandeln.
  • Html laden in einen HtmlViewer
  • Html dann drucken z.B. mit MBS

[quote=314498:@Stefan Sicurella]Also: g.SuperDrawString RTFtext,x,y,breite

Das könnte ich in allen meinen Apps gut gebrauchen![/quote]
Ja, sowohl der offenbar nötige Umweg über das TextField als auch die mangelhafte Ausgabe (interessant, dass die 2 kleiner, aber nicht tiefgestellt gedruckt wird) lassen wohl nur den Schluss zu, dass Attributed bzw. Styled Text ungenügend unterstützt wird.
Hast du mal geschaut, ob es einen entsprechenden Feedback-Request gibt? Könntest du ggf. ein abgemagertes Demo-Projekt dafür beisteuern (zum Untermauern bzw. für einen neuen Request)?

Ich bin bis Montag anderweiterig beschfigt, dann mache ich das auf jeden Fall. In Feedback habe ich zwar etliche Probleme mit StyledText gefunden, aber das speziell jetzt nicht.
Aber Ulrich, machen wir uns nichts vor, das wird ebensowenig gefixed wie die ganze RTF Problematik, die ich schon vor Jahren in Feddback gemeldet habe. Hier nur mal eine Auswahl… nicht nur von mir…
25316
18489
9011
33587
7030

Hier kann man nur auf die MBS Plugins ausweichen… oder sich selbst etwas basteln.

Ich proboiere es Montag mal noch mit HTML aus, wie Beatrix es vorgschlagen hat

Verstehe deinen Frust, Stefan, aber wirf die Flinte nicht ins Korn. Gerade bei so alten Reports besteht die Gefahr, dass sie aus dem Blickfeld geraten, weil die Ingenieure nicht wissen, ob der Fehler “nebenbei” durch einen früheren Release gefixt wurde. Nimm dir ruhig die Freiheit, eventuell dort wo fehlend ein Beispielprojekt nachzureichen und ein “This still exists in …” dazuzuschreiben.

Ich vermute zwar auch, dass Styledtext/RTF momentan keine Priorität genießt, aber bei dem Alter (und der, wie in deinem Fall gut beschriebenen, unzureichenden Unterstützung) wär das auf jeden Fall ein Thema, das – meiner Ansicht nach, der keine weitere Relevanz beigemessen werden sollte – mit auf die Agenda zur Verbesserung von Xojo gehört.

Ja, die bekommen ein schönes Beispielprojekt mit einer Formel… dann Druck mit Xojo Boardmitteln, dann werden wir sehen, was sie dazu sagen.

So hier:

<https://xojo.com/issue/46938>

Ich hoffe ich konnte mein ANliegen verstndlich machen!

So, am Ende geht es natürlich auch so… wirklich nicht schön, aber es erfüllt erst einmal seinen Zweck

Dim pic As New Picture(eingabe_formel.Width, eingabe_formel.Height, 32) eingabe_formel.DrawInto (pic.Graphics, 0, 0) g.DrawPicture pic,x,y