Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Сохранить документ Word как RTF

Delphi , Технологии , OLE Automation MSOffice

Сохранить документ Word как RTF


uses 
  ComObj; 

function ConvertDoc2Rtf(var FileName: string) : Boolean;
var 
  oWord: OleVariant; 
  oDoc: OleVariant; 
begin 
  Result := False; 
  try 
    oWord := GetActiveOleObject('Word.Application'); 
  except 
    oWord := CreateOleObject('Word.Application'); 
  end; 
  oWord.Documents.Open(FileName); 
  oDoc  := oWord.ActiveDocument; 
  FileName := ChangeFileExt(FileName, '.rtf'); 
  oDoc.SaveAs(FileName); 
  oWord.ActiveDocument.Close(wdDoNotSaveChanges, EmptyParam, EmptyParam); 
  oWord.Quit(EmptyParam, EmptyParam, EmptyParam); 
  oDoc := VarNull; 
  oWord := VarNull; 
  Result := True; 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
const 
  FileName = 'c:\Document.doc'; 
begin 
  if ConvertDoc2Rtf(FileName) then 
  begin 
    ShowMessage('Word document has been converted to .rtf'); 
    RichEdit1.Lines.LoadFromFile(FileName); 
  end; 
end;

Программа на Delphi использует объект автоматизации Microsoft Word для конвертации файла Word (.doc) в файл RTF.

Следующий шаг:

  1. Функция ConvertDoc2Rtf принимает имя файла как входной параметр и пытается открыть соответствующий файл Word с помощью метода GetActiveOleObject или CreateOleObject.
  2. Если файл успешно открыт, программа сохраняет документ в файл RTF с помощью метода SaveAs и затем закрывает приложение Word с помощью метода Quit.
  3. Функция возвращает булевое значение, указывающее, была ли конвертация успешной.
  4. В обработчике события Button1Click формы (TForm1) программа вызывает функцию ConvertDoc2Rtf с конкретным именем файла ('c:\Document.doc') и отображает сообщение, если конвертация была успешной, а затем загружает конвертированный файл RTF в RichEdit-контроль (RichEdit1).

Альтернативное решение, не использующее автоматизацию Microsoft Word:

Вместо использования Word для конвертации документа можно использовать третьестороннюю библиотеку,such as SynEdit или ASync Procedures, для чтения и записи файла Word напрямую.

Пример с использованием SynEdit:

uses synedit;

function ConvertDoc2Rtf(const FileName: string): Boolean;
var
  Doc: TSynEditDocument;
  Stream: TStream;
begin
  Result := False;
  try
    Doc := TSynEditDocument.Create(nil);
    Stream := TFileStream.Create(FileName, fmOpenRead);
    try
      Doc.LoadFromStream(Stream);
      FileName := ChangeFileExt(FileName, '.rtf');
      Stream := TFileStream.Create(FileName, fmCreate);
      try
        Doc.SaveToStream(Stream);
        Result := True;
      finally
        FreeAndNil(Stream);
      end;
    finally
      FreeAndNil(Stream);
      FreeAndNil(Doc);
    end;
  except
     // обработка исключения
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
const
  FileName = 'c:\Document.doc';
begin
  if ConvertDoc2Rtf(FileName) then
  begin
    ShowMessage('Word документ был конвертирован в .rtf');
    RichEdit1.Lines.LoadFromFile(FileName);
  end;
end;

В этом коде используется библиотека SynEdit для чтения и записи файлов Word (.doc). Он загружает файл .doc в объект TSynEditDocument, а затем сохраняет его как файл RTF. Это решение не требует установки Microsoft Word на систему.

Обратите внимание, что это только простой пример и может не работать для всех случаев. Для более сложных конвертаций может потребоваться мощная библиотека или сервис.

Статья описывает программный код на языке Delphi, который позволяет сохранять файлы Word в формате RTF с помощью класса OleVariant и компонента Word.Application.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: OLE Automation MSOffice ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-19 01:59:26/0.0050699710845947/1