Эксперимент:
Создаем простенький файл ODT при помощи Open Office v 3.2 OS = WinXP Sp3 Update 20.02.2010. Сохраняем его.
- Открываем его в любом архиваторе (да хоть тотал командоре) распаковываем все файлы.
- Запаковываем в zip архив, даем расширение ODT открываем файл О чудо все РАБОТАЕТ.
Сложности:
- Теперь сама задача: так вот эти файлы (распакованные). нужно запаковать средствами FPC. Тобишь просто все данные файлы загнать в Zip архив и все. Но самое главное без средств Open Office. Т.е Open Office на ПК может и не быть.
См Эксперемент. Все запаковывал при помощи Zipper архивчег получился хороший все архиваторы его понимают. Но вот сам Open Office говорит что файл поврежден. Пытается восстановить и говорит че за Х… ты мне суешь..
Различные наблюдения дали такой результат при распаковки родного ODT все архиваторы говорят что это zip архив версии 2.
Все архивы созданные Zipper имеют версию 1. Как быть???. Где взять более новый Zipper или другую более новую версию библиотеки работы с Zip (именно для упаковки).
- Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
var Zip: TZipper;
F:TZipFileEntries;
begin
//В папке C:\2 как раз и лежат распакованные файлы из ODT
F:=TZipFileEntries.Create(TZipFileEntry);
F.AddFileEntry('C:\2\mimetype','mimetype');
F.AddFileEntry('C:\2\Pictures\100002000000002000000020801EDE22.png','Pictures\100002000000002000000020801EDE22.png');
F.AddFileEntry('C:\2\Thumbnails\thumbnail.png','Thumbnails\thumbnail.png');
F.AddFileEntry('C:\2\manifest.rdf','manifest.rdf');
F.AddFileEntry('C:\2\content.xml','content.xml');
F.AddFileEntry('C:\2\Configurations2\accelerator\current.xml ','Configurations2\accelerator\current.xml');
F.AddFileEntry('C:\2\META-INF\manifest.xml','META-INF\manifest.xml');
F.AddFileEntry('C:\2\meta.xml','meta.xml');
F.AddFileEntry('C:\2\settings.xml','settings.xml');
F.AddFileEntry('C:\2\styles.xml','styles.xml');
zip:=TZipper.Create;
zip.FileName:='C:\1.odt';
zip.ZipFiles(F);
Zip.Free;
F.Free;
end;
PS. Данные распакованные файлы изменяются при помощи Lazarus и вот эти изменения нужно сохранить и запаковать чтоб Open Office не догадался