ODTs selber bauen...

Hi Liste,

schnell bin ich an Grenzen gekommen. Shit happens! Ich werde wohl *.odt's selber bauen müssen. :frowning:

Gibt es irgendwo für mich eine ODT-Struktur-Dokumentation - so was in der Art »OTDs for beginners« ?
Die Google-Suche war leider nicht sehr erfolgreich.

Danke für die Antworten (Links) im Voraus!

Achim

Hi Liste,

schnell bin ich an Grenzen gekommen. Shit happens!  Ich werde wohl *.odt's selber bauen müssen. :frowning:

Warum das? Welche "Grenzen"?

Gibt es irgendwo für mich eine ODT-Struktur-Dokumentation - so was in der Art   »OTDs for beginners«  ?

Oasis-Spezifikation des Formats ist nicht das, was Du suchst?

Die Google-Suche war leider nicht sehr erfolgreich.

hätte google nämlich sicher ausgespuckt.

Danke für die Antworten (Links) im Voraus!

Sorry, aber mit so spärlicher Info kann man nicht wirklich weiterhelfen.

Warum selber erstellen? Wenn nicht LibreOffice, warum dann nicht
odf-toolkit oder ähnliches verwenden?

ciao
Christian

Hi Liste,

schnell bin ich an Grenzen gekommen. Shit happens! Ich werde wohl *.odt's selber bauen müssen. :frowning:

Gibt es irgendwo für mich eine ODT-Struktur-Dokumentation - so was in der Art »OTDs for beginners« ?
Die Google-Suche war leider nicht sehr erfolgreich.

Danke für die Antworten (Links) im Voraus!

http://de.wikipedia.org/wiki/OpenDocument

---schnipp---
<text:p text:style-name="Standard">NAME</text:p>
<text:p text:style-name="Standard"><text:s text:c="7"/>zip, zipcloak, zipnote, zipsplit - package and compress (archive) files</text:p>
<text:p text:style-name="Standard"/><text:p text:style-name="Standard">SYNOPSIS</text:p>
<text:p text:style-name="Standard"><text:s text:c="7"/>zip <text:s/>[-aABcdDeEfFghjkKlLmoOqrRSTuvVwXyz!@$] <text:s text:c="2"/>[-b path] <text:s text:c="2"/>[-n suffixes]</text:p>
<text:p text:style-name="Standard"><text:s text:c="7"/>[-t mmddyyyy] [-tt mmddyyyy] [ zipfile [ file1 file2 ...]] [-xi list]</text:p><text:p text:style-name="Standard"/>
<text:p text:style-name="Standard"><text:s text:c="7"/>zipcloak [-dhL] [-b path] zipfile</text:p><text:p text:style-name="Standard"/>
<text:p text:style-name="Standard"><text:s text:c="7"/>zipnote [-hwL] [-b path] zipfile</text:p><text:p text:style-name="Standard"/>
<text:p text:style-name="Standard"><text:s text:c="7"/>zipsplit [-hiLpst] [-n size] [-b path] zipfile</text:p><text:p text:style-name="Standard"/>
<text:p text:style-name="Standard">DESCRIPTION</text:p>
<text:p text:style-name="Standard"><text:s text:c="7"/>zip <text:s/>is <text:s/>a compression and file packaging utility for Unix, VMS, MSDOS,</text:p>
---schnipp---

Hi Uwe nd Christian,

ich will mit Perl einen Parser bauen, der XY-Datein nach Textmustern durchsucht und sich dann diese (z.T großen) ASCII-Texte herauskopiert.

"Lazy" (klingt schöner als in deutsch) wie ich bin, habe ich einfach so zu mir gedacht tausche doch einfach mal vorgefertigten Text ###Baustein_0001### im ODT-File gegen den gaaaaanz vielen ASCII-Text aus der XY-Datei aus.

ERGEBNIS: Der Text war zwar bis zum Seitenende da (der Rest war wohl abgeschnitten), aber alles ohne Formatierungen. Verschwunden waren im odt-File alle Zeilenschaltungen und vieles mehr.

ERKENNTNIS: Jetzt weis ich das es mit der "Lazy"-Methode nicht geht. :wink:

Ich werde mich mit XML auseinder setzten müssen und vielleicht habt Ihr ja auch noch ein paar Tipps für mich :slight_smile:

Gruß Achim

---schnipp---
<text:p text:style-name="Standard">NAME</text:p>
<text:p text:style-name="Standard"><text:s text:c="7"/>zip, zipcloak, zipnote, zipsplit - package and compress (archive) files</text:p>
<text:p text:style-name="Standard"/><text:p text:style-name="Standard">SYNOPSIS</text:p>
<text:p text:style-name="Standard"><text:s text:c="7"/>zip<text:s/>[-aABcdDeEfFghjkKlLmoOqrRSTuvVwXyz!@$]<text:s text:c="2"/>[-b path]<text:s text:c="2"/>[-n suffixes]</text:p>
<text:p text:style-name="Standard"><text:s text:c="7"/>[-t mmddyyyy] [-tt mmddyyyy] [ zipfile [ file1 file2 ...]] [-xi list]</text:p><text:p text:style-name="Standard"/>
<text:p text:style-name="Standard"><text:s text:c="7"/>zipcloak [-dhL] [-b path] zipfile</text:p><text:p text:style-name="Standard"/>
<text:p text:style-name="Standard"><text:s text:c="7"/>zipnote [-hwL] [-b path] zipfile</text:p><text:p text:style-name="Standard"/>
<text:p text:style-name="Standard"><text:s text:c="7"/>zipsplit [-hiLpst] [-n size] [-b path] zipfile</text:p><text:p text:style-name="Standard"/>
<text:p text:style-name="Standard">DESCRIPTION</text:p>
<text:p text:style-name="Standard"><text:s text:c="7"/>zip<text:s/>is<text:s/>a compression and file packaging utility for Unix, VMS, MSDOS,</text:p>
---schnipp---

Hi Uwe nd Christian,

ich will mit Perl einen Parser bauen, der XY-Datein nach Textmustern durchsucht und sich dann diese (z.T großen) ASCII-Texte herauskopiert.

"Lazy" (klingt schöner als in deutsch) wie ich bin, habe ich einfach so zu mir gedacht tausche doch einfach mal vorgefertigten Text ###Baustein_0001### im ODT-File gegen den gaaaaanz vielen ASCII-Text aus der XY-Datei aus.

ERGEBNIS: Der Text war zwar bis zum Seitenende da (der Rest war wohl abgeschnitten), aber alles ohne Formatierungen. Verschwunden waren im odt-File alle Zeilenschaltungen und vieles mehr.

ERKENNTNIS: Jetzt weis ich das es mit der "Lazy"-Methode nicht geht. :wink:

Ich werde mich mit XML auseinder setzten müssen und vielleicht habt Ihr ja auch noch ein paar Tipps für mich :slight_smile:

Bau den Text doch Zeilenweise ein. (maschinelles Mischen der Dateien)
Jede Zele wird mit "<text:soft-page-break/>" beendet

Hi Achim, *,

[...]

Was wolltest Du uns mit dem "manpage-snippet" sagen?

ich will mit Perl einen Parser bauen, der XY-Datein nach Textmustern durchsucht und sich dann diese (z.T großen)  ASCII-Texte herauskopiert.

Soweit ja kein Problem, keine Ahnung was XY-Dateien sind, aber hat ja
dann erstmal noch nichts mit ODF/ODT oder LibreOffice zu tun.
Es geht also um große Mengen unformatierten Texts., richtig?

"Lazy" (klingt schöner als in deutsch) wie ich bin, habe ich einfach so zu mir gedacht tausche doch einfach mal vorgefertigten Text    ###Baustein_0001###   im ODT-File gegen den gaaaaanz vielen ASCII-Text aus der XY-Datei aus.

Ja, geht im Prinzip auch so, nur muß man wissen:
Absatz in LO/OOo kann maximak 64k Zeichen haben. Wenn der Text also
länger ist, dann mußt Du ihn in mehrere Absätze aufsplitten.

ERGEBNIS: Der Text war zwar bis zum Seitenende da (der Rest war wohl abgeschnitten),

Naja "war wohl" ist wenig präzise. Wenn der Text in einer
Tabellenzelle gelandet ist, dann muß für die Tabelle "allow cells to
split" aktiviert sein.

aber alles ohne Formatierungen.

ASCII mit Formatiernungen? Wie soll das funktinoieren?

Verschwunden waren im odt-File alle Zeilenschaltungen und vieles mehr.

Ja klar, weil für XML whitespace quasi egal ist. Zeielnumbrüche mußt
Du in entsprechende yml-Tags packen. Absätze in entsprechende
Absatz-tags.
Mehrere Leerzeichen mußt Du genauso escapen - dein man-page snippet
zeigts ja schon:
<text:s text:c="7"/> = 7 Leerzeichen.

Und natürlich mußt du alles escapen, was ansonsten als Teil des XMLs
angesehen wird.

Wenn Du es nicht selber in die Datei reinschreiben willst, kannst Du
ja auch LO dafür nehmen. Einfügen | Datei, oder auch verknüft in einem
Bereich,....

ciao
Christian

Hallo Achim,
bei der Suche in Google mit dem Begriff: "tutorial libreoffice" werden 2,6 Mio Ergebnisse angezeigt. . .
Etwas wird auch für Dich, Deine Frage, dabei sein !
Noch einmal versuchen

MfG Klaus

Hi Klaus,

Google ist (nur dann) Dein Freund - wenn Du (wenigsten in etwa) weist "welche" Suchbegriffe du übergeben musst. :wink:
Ansonsten wird exakt das angezeigt mit dem du zu Deinem Problem nichts anfangen kannst.

Hinsichtlich Deiner Empfehlung konnte ich mit den von Google angebotenen Links leider auch nichts anfangen.
Aber vielen Dank!

Gruß Achim

Konntest Du mit dem Wikipedia-Artikel was anfangen?

Hi Christian,

Was wolltest Du uns mit dem "manpage-snippet" sagen?

Problembeschreibungen sind nicht immer Einfach - schon gar nicht wenn sie kurz sein sollten.

Es geht also um große Mengen unformatierten Texts., richtig?

Genau. Mit einem UML-Tool werden Geschäftsprozesse graphisch dargestellt. Die Textbeschreibung dazu soll wiederum in Dokumente überführt werden.

Absatz in LO/OOo kann maximak 64k Zeichen haben.
....

Du hast mich scheinbar gut verstanden und gute Tipps dazu. Gibt es irgendwo ein Dokument aus dem ich mich genauso schlau machen kann?

Auch Dir vielen Dank!

Gruß Achim

NS:

Wenn Du es nicht selber in die Datei reinschreiben willst, kannst Du
ja auch LO dafür nehmen. Einfügen | Datei, oder auch verknüft in einem Bereich,....

Das wird aufgrund der Masse nicht gehen.
V I E L L E I C H T könnte mir hier ein Globaldokument helfen, während die von mir zu überführenden Texte in den verknüpften (Einfügen, Bereiche... [Bereich] [X] verknüpfen...(usw)) ODT-Dateien übertragen werden. Aber "ich vermute", das das nur ein schlechter Kompromiss ist, wenn er überhaupt zu den Ergebnissen führt die ich benötige.

Hi Klaus,

Konntest Du mit dem Wikipedia-Artikel was anfangen?

Ein bisschen. Danke für den Tipp.

Gruß Achim

Hi Christian, & Liste,

die Analyse der content.xml ist ja nicht schwierig. Nur beim automatischen
(also NICHT händisch eingefügt übers Menü "Einfügen, Manueller Umbruch...")
Seitenumbruch habe ich keine Idee zu.
Wenn der User bei der manuellen Texterfassung das Seitenende errreicht hat
und auf der nächsten Seite weiter schreibt, dann fügt LO einen dynamischen
Seitenumbruch ein, der in der content.xml wie folgt ausssieht

<text:soft-page-break/>

bzw, wie nachfolgendes sprechendes Beispiel deutlicher zeigt:

... wie machen wir das mit (Seite_1) <text:soft-page-break/>(Seite_2) Verlinkungen, z.B. ins...

Wenn ich später diese content.xml über einen Softwareroboter mit
Text + XML-Steuerbefehle befülle, steht bei mir aktuell die Frage noch offen,
über welche Kriterien beurteilt wird, wann zwischen zwei Worten
der XML-Befehl für dynamischen Seitenumbruch eingefügt werden muss.

Wenn mir hier jemand helfen kann oder einen Tipp hat, freue ich mich
sehr darüber. Vielen Dank im Voraus!

Gruß Achim

Mach doch nach einer festgelegten Zeilenanzahl einen festen Seitenumbruch

Dann bis Du auf der sicheren Seite.

Moin Achim,

Wenn ich später diese content.xml über einen Softwareroboter mit
Text + XML-Steuerbefehle befülle, steht bei mir aktuell die Frage
noch offen, über welche Kriterien beurteilt wird, wann zwischen zwei
Worten der XML-Befehl für dynamischen Seitenumbruch eingefügt werden
muss.

Wenn mir hier jemand helfen kann oder einen Tipp hat, freue ich mich
sehr darüber. Vielen Dank im Voraus!

Da ich von der Implementierung in LibO keine Ahnung habe, kann ich nur
den gesunden Menschenverstand einsetzen:

Bei ODT handelt es sich ja um Fließtexte.

Zeilen dürften also umgebrochen werden, sobald sie "voll" sind, d.h.
vermutlich werden die Buchstabenbreiten plus Leerzeichen usw.
zusammenaddiert und mit dem verfügbaren Raum (Seitenbreite minus Ränder
usw.) verglichen.

Ähnlich sollte es mit den Zeilen sein: Sobald die Zeilenzahl mal
benötigter vertikaler Raum (plus Zeilenzwischenräume, Absatzabstände
usw.) die verfügbare vertikale "lichte Weite" der Seite übersteigt, wird
am Ende der letzten Zeile ein Seitenumbruch erfolgen.

Mir ist jetzt nicht ganz klar, was du genau mit "beurteilen" meinst.
Dieser Umbruch sollte IMHO nicht aufgrund von Urteilen sondern von
Berechnungen erfolgen.

Gruß Nino

Hi Uwe,

die Idee ist nicht vom Tisch zu weisen!

Jede Zeile hat X Zeichen ohne Zeilenschaltung.
Jede Seite hat X Zeilen + Absatzschaltungen + Zeilenschaltungen.

Ist die Anzahl erreicht, dann könnte / müsste das Seitenende erreicht sein.
Über Deine Idee lohnt es sich nachzudenken.

Problematisch könnte es aber bei Überschriften und Zeichengröße, bzw. Dichte geben.
hmmm...

Ich glaube, dass diese Nuss wird nicht einfach zu knacken sein wird. :wink:
Vielleicht für jedes Kapitel ein eigenes ODT-Dokument, die dann jeweils ein Teil eines Globaldokumentes sind?
Aber wird dann der Aufruf über den jodconverter

../.../soffice.bin -headless ...
.../jodconverter ...

den manuellen Aufruf ersetzten und die fehlenden Seitenumbrüche einfügen ???
hmmm…

Gruß Achim

Hi Uwe,

die Idee ist nicht vom Tisch zu weisen!

Jede Zeile hat X Zeichen ohne Zeilenschaltung.
Jede Seite hat X Zeilen + Absatzschaltungen + Zeilenschaltungen.

Ist die Anzahl erreicht, dann könnte / müsste das Seitenende erreicht sein.
Über Deine Idee lohnt es sich nachzudenken.

Nicht umsonst programmiere ich schon viele Jahre.
Und ich habe gelernt, daß die meisten Lösungen recht simpel gehalten werden können.
Sobald Du den Kram in eine Maßeinheit set, die groß genug ist, z. b. 1 Seite = 700 Punkte Länge [ist jetzt einfach mal eine Annahme]
und Du für jeden Bereich die Punktzahl abzieht, dann klappt es auch mit den Umbrüchen