AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bild aus RTF-Text extrahieren

Ein Thema von skoschke · begonnen am 29. Jul 2020 · letzter Beitrag vom 4. Aug 2020
Antwort Antwort
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#1

AW: Bild aus RTF-Text extrahieren

  Alt 30. Jul 2020, 13:39
Die Idee mit der Suche nach \pict ... ist ganz ok. Neben WMF sind allerdings auch z.B. PNG oder JPG als Dateiformat möglich (siehe RTF Spezifikation).
Michael Justin
  Mit Zitat antworten Zitat
skoschke

Registriert seit: 6. Jan 2009
523 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Bild aus RTF-Text extrahieren

  Alt 30. Jul 2020, 14:15
Ich habe jetzt manuell aus dem RTF-String das Bild (ich bekomme hier immer \wmetafile8 ) herausgezogen und in eine Datei geschrieben (Test.wmf).

Diese lässt sich ohne Probleme mit dem Microsoft Office Picture Manager öffnen und anzeigen, daher gehe ich davon aus dass das erst mal korrekt ist.

Nun versuche ich, diese Datei in ein TMetaFile zu laden
Delphi-Quellcode:
  
  Metafile := TMetaFile.Create;
  MetaFile.LoadFromFile(fn);
und erhalte einen Laufzeitfehler: "Metadatei ist ungültig"

Die gleiche Datei habe ich auf einem Onlineportal in JPEG konvertieren lassen und dies ist ohne Fehler durchgelaufen.

Nun bin ich mit meinem Latein am Ende, hat jemand eine Idee?

Ciao
Stefan
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#3

AW: Bild aus RTF-Text extrahieren

  Alt 30. Jul 2020, 14:38
und erhalte einen Laufzeitfehler: "Metadatei ist ungültig"
Könnte an einem Headerfehler liegen. Ich erinnere mich dunkel an ein entsprechendes Problem mit in RTF eingebetteten WMF's. Enthält die Datei einen WMF Header?
Michael Justin
  Mit Zitat antworten Zitat
jziersch

Registriert seit: 9. Okt 2003
Ort: München
258 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Bild aus RTF-Text extrahieren

  Alt 30. Jul 2020, 14:51
Dem wmetafile8 typ in RTF fehlt der metafile header. Es wird daher mit SetWinMetaFileBits geladen.

Von WPTools (das Dir ja vorliegt) wird er als typ wpreadPictWMetafile geladen.

Das passiert dann in TWPOCustomImage.LoadMetafileStream

Ändere einfach mal den code

if WMetafileType = 8 then
lpmfp.mm := 8
else lpmfp.mm := 1; // was: WMetafileType;

in

if WMetafileType = 8 then
lpmfp.mm := 1
else lpmfp.mm := 1; // was: WMetafileType;

Das macht womöglich den entscheidenden Unterschied.
Anscheinend wurde die Metadatei inkorrekterweise als Typ 8 eingebettet, anstatt Typ 1, den andere RTF Leser zeigen ja auch eine Miniatur an.
WPCubed GmbH
Komponenten für Delphi:
WPTools, wPDF, WPViewPDF

Geändert von jziersch (30. Jul 2020 um 14:53 Uhr)
  Mit Zitat antworten Zitat
skoschke

Registriert seit: 6. Jan 2009
523 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Bild aus RTF-Text extrahieren

  Alt 31. Jul 2020, 12:44
Danke, aber leider bringt dies keinen Erfolg

Ich denke da wird das uralte TX-Control (über 20 Jahre alt) wohl Mist machen beim Export als RTF.

Und mit diesem RTF muss ich nun klar kommen...

Ich habe den Inhalt des /Pict Datenabschnittes in eine Datei geschrieben, welche vom Microsoft Office Picture Manager problemlos gelesen und angezeigt wird.
Ein Export dieser angezeigten Datei wieder als WMF ergibt absolut bytegleich die gleiche Datei, beginnend mit 01 00 09 00 00 03 DE 60 ... wobei ich die die ersten 4 Byte auch online in einigen Dukumentationen gefunden habe, kann also nicht so falsch sein?

Ich wollte nun aus diesem WMF-File ein BMP-File erzeugen, um dieses dann in eine Textbox zu laden, aber
Delphi-Quellcode:
    
var
MetaFile : TMetaFile;
begin
MetaFile.LoadFromFile(FileWmf);
bekomme ich "Metadatei ist ungültig"

Zitat:
Könnte an einem Headerfehler liegen. Ich erinnere mich dunkel an ein entsprechendes Problem mit in RTF eingebetteten WMF's. Enthält die Datei einen WMF Header?
Wie müsste der aussehen?

Ciao
Stefan
  Mit Zitat antworten Zitat
jziersch

Registriert seit: 9. Okt 2003
Ort: München
258 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Bild aus RTF-Text extrahieren

  Alt 31. Jul 2020, 12:52
Nachdem ich nur die Anzeige in WPTools sowie diverse Wordprozessor Programme kenne, weis ich nicht wie wie das eigentlich aussehen soll. Soll es skaliert sein, oder das kleine logo oben links oder ... ?

Den code zu abspeichern einer validen WMF incl. Header hab ich bereits oben gepostet. WPTools ergänzt ja den header.
WPCubed GmbH
Komponenten für Delphi:
WPTools, wPDF, WPViewPDF
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#7

AW: Bild aus RTF-Text extrahieren

  Alt 31. Jul 2020, 21:24
Die Bild kann unterschiedlich kodiert sein.
Code:
{\pict\wmetafile8\picw5508\pich10399\picwgoal3120\pichgoal5895\picscalex77\picscaley77
pict leitet das Bild ein.
Dann kommt das Bild-Format hier ist dann noch Bitmap oder PNG möglich. Die Steuerbefehle schau mal bitte in der Dokumentation zum Format nach.

Code:
{\pict\wmetafile8\picw5508\pich10399\picwgoal3120\pichgoal5895\picscalex77\picscaley77\bin
Hinten hinter kann noch \bin angehängt sein, dann kommen Binärdaten ansonsten sind die Hex-kodiert.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz