AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Text aus Word.DOC extrahieren (MS-Word 97-2003-Binär-Format:)
Thema durchsuchen
Ansicht
Themen-Optionen

Text aus Word.DOC extrahieren (MS-Word 97-2003-Binär-Format:)

Ein Thema von Ralf Stehle · begonnen am 4. Jan 2014 · letzter Beitrag vom 6. Jan 2014
Antwort Antwort
marky522

Registriert seit: 30. Okt 2006
29 Beiträge
 
Delphi XE2 Professional
 
#1

AW: Text aus Word.DOC extrahieren (MS-Word 97-2003-Binär-Format:)

  Alt 6. Jan 2014, 09:17
Hallo,

meines Wissens nach werden beim doc-Format verschiedene Dateien (Datenströme) in einer Datei im Microsodt Compound File Format gespeichert - das ist zumindes bei xls-Dateien so.

Zunächst müssen die einzelnen Dateien (Datenströme) aus der Gesamtdatei extrahiert werden. Dazu habe ich ein Programm geschrieben, welches das kann.
Dann müssen die einzelnen Datenströme analysiert werden.

Infos zum Compound File Format erhält man im Internet, einfach mal nach dem Dokument "OpenOffice.org's Documentation of the
Microsoft Compound Document
File Format" suchen.


Ich hänge das Programm mal unten an.

MfG

Markus

PS: Das Programm war ursprünglich für was anderes gedacht, also bitte nicht an den Eingabemöglichkeiten stören, sondern einfach nur den Knopf "Datei öffnen" betätigen, dann wird die Datei zerlegt und es werden im Quellverzeichnis die einzelnen Datenströme mit .bin gespeichert.
Angehängte Dateien
Dateityp: zip Project1.zip (840,8 KB, 14x aufgerufen)
  Mit Zitat antworten Zitat
Ralf Stehle

Registriert seit: 8. Aug 2003
124 Beiträge
 
Delphi 7 Professional
 
#2

AW: Text aus Word.DOC extrahieren (MS-Word 97-2003-Binär-Format:)

  Alt 6. Jan 2014, 11:33
Vielen Dank. Dein Projekt schneidet in meinen Dateien einfach die ersten 511 Bytes heraus. Christian hatte mir aber bereits mitgeteilt, dass ich den FIB ab Offset 512 finde. Das ist also nicht das Problem

Ich möchte euch auch nicht weiter mit meinen Sonderformaten langweilen.

Da der Text meiner Dateien in Tabellen liegt, versuche ich als letzten Lösungsansatz noch herauszufinden, wie man in Worddateien den Anfang einer einfachen Text-Tabelle findet.

Diese Frage ist vielleicht auch für andere Foren-Mitglieder interessant.

Ansonsten werde ich die Komponente von scalabium.com einsetzen.
Bis auf das Auslesen der Fußzeile funktioniert diese sehr gut.
Ralf Stehle
ralfstehle@yahoo.de
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Text aus Word.DOC extrahieren (MS-Word 97-2003-Binär-Format:)

  Alt 6. Jan 2014, 11:46
Das binäre Word-Format setzt auf Windows Structured Storage auf.
Jeder Versuch das Word-Format direkt zu lesen und Structured Storage zu ignorieren ist von vornerein zum Scheitern verurteilt.
Man muss die StgOpenStorageEx()-Funktion verwenden und sich mit der überkomplizierten Microsoft-API rumschlagen.
Wenn man das schön in Delphi-Klassen verpackt bekommt man vielleicht auch eine API die man benützen kann.

Aber einfach so direkt in die Datei reingreifen - vergiss es.

PS: die Jedi Code Library enthält die Unit JclStructStorage.pas die schon mal einige grundlegende Klassen enthält.
fork me on Github

Geändert von sx2008 ( 6. Jan 2014 um 11:52 Uhr)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#4

AW: Text aus Word.DOC extrahieren (MS-Word 97-2003-Binär-Format:)

  Alt 6. Jan 2014, 12:01
Eine weitere Möglichkeit, Word-Dateien ohne installiertes Word zu öffnen, wäre OpenOffice, denn auch dafür gibt es Automationsmöglichkeiten.
  Mit Zitat antworten Zitat
Ralf Stehle

Registriert seit: 8. Aug 2003
124 Beiträge
 
Delphi 7 Professional
 
#5

AW: Text aus Word.DOC extrahieren (MS-Word 97-2003-Binär-Format:)

  Alt 6. Jan 2014, 14:11
Mit OpenOffice Dateien zu durchsuchen dauert wahrscheinlich genauso lange wie mit Word. Ich möchte Word-OLE vor allem wegen der Geschwindigkeit nicht benutzen.

Außerdem geht es mir auch darum, den prinzipiellen Aufbau der Worddateien zu verstehen. Wie gesagt, funktioniert die Komponente TMSWordDocument von www.scalabium.com recht gut
Ralf Stehle
ralfstehle@yahoo.de
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.233 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Text aus Word.DOC extrahieren (MS-Word 97-2003-Binär-Format:)

  Alt 6. Jan 2014, 14:39
Mit OpenOffice Dateien zu durchsuchen dauert wahrscheinlich genauso lange wie mit Word. Ich möchte Word-OLE vor allem wegen der Geschwindigkeit nicht benutzen.
Hat sich beim ersten Post anders angehört.
Oft sind Performanceproblem auf fehlerhafte Implementierung zurück zu führen (z. B. bei Excel arbeiten mit Zellen statt mit Ranges).
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

AW: Text aus Word.DOC extrahieren (MS-Word 97-2003-Binär-Format:)

  Alt 6. Jan 2014, 14:49
Ich möchte Word-OLE vor allem wegen der Geschwindigkeit nicht benutzen.
Es wird vieeeeeeel schneller, wenn man Word in der Zeit unsichtbar macht.

vorher:  WordApplication.Visible := False; nachher:
Delphi-Quellcode:
  
  WordApplication.Visible := True;
  WordApplication.ShowMe;
  WordApplication.Activate;
  WordDocument.Activate;
  ...
  oder wie auch immer
Die permanente Aktualisierung des Bildschirmes dauert und dauert und dauert...
  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 03:11 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