ask: Win32::OLE Word-Datei auslesen - manuelle Zeilenubrüche entferne

Hallo, hallo,

ich möchte mit Perl gerne ein MS Word-Dokument einlesen,
alle manuellen Zeilenumbrüche gegen ein Leerzeichen ersetzen
und dann den modifizierten Inhalt in eine Textdatei schreiben.

Die Datei auslesen und als Textdatei schreiben bekomme ich hin,
allein auf den Inhalt kann ich nicht "ersetzend" zugreifen.

Mein Script (ohne Ansatz des Ersetzen):

  
use Win32::OLE;  
use Win32::OLE::Const 'Microsoft.Word';  
$Win32::OLE::Warn = 3;  
  
my $file_in  = 'katalog.doc';  
my $file_out  = 'korr.txt';  
  
my $word = Win32::OLE->new('Word.Application','Quit') or die "Word problem: ",Win32::OLE->LastError();  
my $document = $word->Documents->Open($file_in) or die "Word problem: ",Win32::OLE->LastError();  
  
# und hier fehlt's  
  
$document->SaveAs($file_out, wdFormatText);  

Für Vorschläge bin ich dankbar.

Danke und Gruß AS

  1. Hallo ask!

    und hier fehlt's

    Vielleicht hilft dieser Archivbeitrag:

    http://forum.de.selfhtml.org/archiv/2002/7/t16281/

    Viele Grüße aus Frankfurt/Main,
    Patrick

    --

    _ - jenseits vom delirium - _
    [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
    Nichts ist unmöglich? Doch!
    Heute schon gegökt?
    1. Hallo ask!

      und hier fehlt's

      Vielleicht hilft dieser Archivbeitrag:

      http://forum.de.selfhtml.org/archiv/2002/7/t16281/

      Viele Grüße aus Frankfurt/Main,
      Patrick

      Hallo Patrick,

      vielen Dank, obgleich ich den Beitrag auch schon studiert hatte,
      hat er doch die Lösung gebracht.

      Fast hatte ich es schon, nur das ich beim Bezeichner "Content"
      nicht das "->{Text}" beigegeben hatte.
      Nun kann ich mit dem content machen, was ich will.

        
      use Win32::OLE qw(in);  
      $Win32::OLE::Warn = 3;  
        
      my $pkorr  = '/mein/pfad/';  
      my $file_in  = $pkorr.'katalog.doc';  
      my $file_out  = $pkorr.'korr.txt';  
        
      my $Word = Win32::OLE->new('Word.Application', 'Quit') or die "Word problem: ",Win32::OLE->LastError();  
      my $Doc = $Word->Documents->Open($file_in) or die "Word problem: ",Win32::OLE->LastError();  
        
      my $content = $Doc->{Content}->{Text};  
        
      $content =~ s/was/das/g;  
        
      open(OUT,">$file_out"); print OUT $content; close OUT;  
      
      

      Viele Grüße aus Berlin Andreas