XbpRtf() Ausgabe in eine Bitmap

Nutzung, Komponenten, .NET

Moderator: Moderatoren

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

XbpRtf() Ausgabe in eine Bitmap

Beitrag von UliTs »

Hallo,

ich setze mit viel Freude die XbpPDF()-Klasse von Edgar Borger ein. Ein Problem habe ich jedoch: man kann leider Rtf-Texte nicht direkt in die PDF-Datei ausgeben. Edgar schlug vor, den Rtf-Text in eine Bitmap umzuwandeln. Diese kann dann problemlos in die PDF-Datei eingebunden werden.

Leider kriege ich es nicht hin! :(
Hat jemand eine Lösungsidee? :?:
Ich vermute, mit Hilfe von XbpRtf():PrintRect() und geeignetem PresSpace geht es.

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

Beitrag von brandelh »

Hi,

eine Bitmap (BMP, GIF bzw. JPG) zu erstellen ist nicht schwer ...

Code: Alles auswählen

// Erzeuge Grafik für Bitmap
oPS := XbpPresSpace():new():create() 
           // oDevice bleibt leer, da keine Anzeige
           // aber wahrscheinlich muss man nUnits 
           // passend zu der Angabe von PDF etc. angeben.
oBMP := XbpBitmap():new():create(oPS)
oBMP:PresSpace(oPS)
oBMP:make(nXS,nYS,1,24)
...
GraSetColor(oPS,...)
GraLine(oPS,...)
GraStringAt(oPS,...)
...
delete file (cBitMapName)
oBMP:saveFile(cBitMapName, XBP_FORMAT_GIF, XBP_DEF_COMPRESSION)
oBMP:destroy()
bei XbpPresSpace():new():create() muss man die richtige Größeneinheit angeben, sonst wird die Schrift winzig (Standard ist Pixel).
Mit XbpFTP() habe ich allerdings keine Erfahrung.

JPG eignen sich am Besten für Bilder (viele Farben)
GIF eignen sich am Besten für Icons oder einfarbige Hintergründe mit Text, da diese recht klein sind (Komprimierung) und den Text sauber darstellen, bei JPG habe ich schon Schatteneffekte gehabt.
BMP ist natürlich immer gut, allerdings auch groß.
PNG wäre sicher auch nicht schlecht, allerdings dauert das Speichern - nach meinen damaligen Test - sehr lange (im Vergleich zu den anderen).

Allerdings hat das alles den Nachteil, dass im PDF kein Text sondern Bitmap ankommt, also nichts mit markieren und kopieren, Druckverbesserung etc. Das kann beim Drucken unschön aussehen.

Eventuell solltest du überlegen, ob du den Druckdatenstrom von RFT auswertest und mit verschiedenen Schriften (Größe, Fett etc.) nachbaust.

Die andere Möglichkeit wäre natürlich ein PDF Druckertreiber.
Ich nutze neben dem original Acrobat auch den eDOCPrinter PDF Pro. Der letzte hat die Möglichkeit den Text automatisch (über Schrifteigenschaften) mit Lesezeichen auszustatten.

Ich habe also 2 Vorgehensweisen:

1. Mein Programm hat komplexe Druckausgaben (mit meiner HB_Printer Klasse) die normalerweise auf den Drucker gehen, hier kann man über den PDF Druckertreiber eine PDF erzeugen.

2. Ich will nur eine PDF (z.B. für WEB Server ...), dann generiere ich diese mit XbpPDF() komplett.
Gruß
Hubert
Antworten