Sistem Tarafından Oluşturulan OD(X) Dosyalarında Sürüm Uyumsuzluğu

Merhabalar,
Aslında sorun sadece Kelime İşlemci ile alakalı değil, diğer uygulamlarla ilgili ama yazacak uygun bir yer bulamadım. Bunun için yöneticilerden şimdiden özür dilerim.

Sorunum, sistem tarafından oluşturulan ODX (odt, ods, odb…) dosyalarının LibreOffice tarafından “Sürüm Uyumsuzluğu. Yanlış dosya sürümü” hatası vererek açılmaması. Öncelikle hatayı Python ile yazdığım uygulamalarda aradım ama doğrudan konsoldan “touch” komutuyla oluşturulan dosyalarda da aynı uyarı ile karşılaşıyorum. Arch 32 bit sistemde LO 4.1.4 kullanıyorum.

Bunun sebebi ve çözümü hakkında fikri olan var mı? Şimdiden teşekkürler.

Asıl soru: http://forum.libreoffice.org.tr/viewtopic.php?f=4&t=550

Güzel soru.

Neden basit touch komutu ile .odt uzantılı dosya oluşturamıyacağımız sorulmuş. (en azından o zaman)

Şuan böyle bir problem yok touch komutu ile .odt dosyası oluşturup içine echo ile yazı yazılabiliyor. Ve dosya sorunsuz açılıyor.

Calc .ods dosyası içinde touch komutu ile boş belge oluşturma mümkün ama içine echo ile içerik girerken kod sorunu yasanması gayet mantıklı.

Zamanında verilen cevap konuyu açıklayıcı burada bulunmasında fayda var. Sabri Ünal’dan alıntıdır.


Herhangi bir uygulama tarafından odt
dosyası oluşturmak istiyorsunuz
anladığım.

Dilerseniz konuya ben de PHP
tarafından bakayım.


ODT dosyası aslında zip formatında bir
içeriğe sahiptir.

test.odt dosyasını test.zip diye
değiştirip iç yapısını görüntülerseniz

    Kod: 
        Configurations2/
        META-INF/
        Thumbnails/
        content.xml
        layout-cache
        manifest.rdf
        meta.xml
        mimetype
        settings.xml
        styles.xml


Klasör ve dosyalarına sahip olduğunu
görürsünüz.

İlk işlem olarak META-INF/ klasörüne
bulunan manifest.xml dosyasına
başvurulmaktadır.

Dosyanın içeriği şöyle

    
   
     <?xml version="1.0" encoding="UTF-8"?>
>         <manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0"
 manifest:version="1.2">
>          <manifest:file-entry manifest:full-path="/"
> manifest:version="1.2"
> manifest:media-type="application/vnd.oasis.opendocument.text"/>
>          <manifest:file-entry manifest:full-path="Thumbnails/thumbnail.png"
> manifest:media-type="image/png"/>
>          <manifest:file-entry manifest:full-path="layout-cache"
> manifest:media-type="application/binary"/>
>          <manifest:file-entry manifest:full-path="content.xml"
> manifest:media-type="text/xml"/>
>          <manifest:file-entry manifest:full-path="settings.xml"
> manifest:media-type="text/xml"/>
>          <manifest:file-entry manifest:full-path="meta.xml"
> manifest:media-type="text/xml"/>
>          <manifest:file-entry manifest:full-path="styles.xml"
> manifest:media-type="text/xml"/>
>          <manifest:file-entry manifest:full-path="manifest.rdf"
> manifest:media-type="application/rdf+xml"/>
>          <manifest:file-entry manifest:full-path="Configurations2/accelerator/current.xml"
> manifest:media-type=""/>
>          <manifest:file-entry manifest:full-path="Configurations2/"
> manifest:media-type="application/vnd.sun.xml.ui.configuration"/>
>         </manifest:manifest>

mimetype uzantısız dosyası dosya
tipini tutmaktadır.

Kod:
    application/vnd.oasis.opendocument.text

Bu dosyanın opendocument.text /odt
olduğu buradan anlaşılmaktadır.

meta.xml dosyasında inkar
edemeyeceğiniz imzalar bulunmaktadır.
Temel olarak birilerine
gönderdiğinizde dökümanın sizi ele
veren kısmıdır :slight_smile:

Content.xml ise asıl içeriğimizi
taşımaktadır.

bu bağlamda touch test.odt şeklinde
oluşturulmuş bir basit dosyanın neden
açılmayacağını anlamıştırsınız umarım.


Tersine bir işlem olarak, bu klasör
yapısına ve gerekli dosya
uyumluluklarına sahip bir dosya
çıktısı zipleyip basabiliyorsanız,
openoffice/libreoffice ile açılmaması
için bir sebep görünmemekte.

php ile odt basmak değil ama, bir ara
php ile EPUB dosyası export itmek için
uğraşmıştım. Öylece kala kaldı.

Şimdi ise [WebODT
projesi](https://github.com/NetAngels/django-webodt)
ile uğraşıyor, kimi özgür yazılım
sevenler.