LO writer: Daten aus webservice einbinden

Hallo zusammen,

ich versuche, die Verwendung von MS Office in unserer Anwendung durch libre office zu ersetzen.

Für einen Vertragsdruck haben wir zur Zeit folgende Konstellation:

* eine WebAnwendung, welche die Definition von StyleSheets für Vertragsdaten ermöglicht
* einen WebService, der für einen bestimmten Vertrag und ein StyleSheet die formatierten Daten liefert
* einen MS Office Word Teil, der den Anwender bei der Anlage einer Druckvorlage unterstützt, indem aus den definierten StyleSheets ausgewählt werden kann. Für jedes ausgewählte StyleSheet wird in der Vorlage ein Feld mit der Feldfunktion INCLUDETEXT mit einer entsprechenden URL zu dem StyleSheet erzeugt.
* einen MS Office Word Teil, der eine Vorlage für einen konkreten Vertrag aktualisiert. Dazu findet eine Anmeldung beim Webservice mit dem konkreten Vertrag statt. Dann werden die URLs aller INCLUDETEXT-Felder konkretisiert und alle Felder über MS Office Word aktualisiert.

Dafür haben wir natürlich jede Menge Makros in MS Office Word geschrieben, die wir portieren müssen.
Ich hoffe, das Verfahren ist einigermaßen klar geworden.

Nach einigem Ausprobieren muss ich jetzt aber erst mal einige grundlegende Fragen loswerden:
- Gibt es überhaupt eine entsprechende Feldfunktion in libre office? Bisher bin ich nicht fündig geworden.
- Kann ich das Verfahren für libre office so übernehmen?
- Gibt es in libre office vielleicht andere, geschicktere Lösungsmöglichkeiten?

Viele Grüße
Birgit

Hallo Birgit

Hallo zusammen,

ich versuche, die Verwendung von MS Office in unserer Anwendung durch libre office zu ersetzen.

Für einen Vertragsdruck haben wir zur Zeit folgende Konstellation:

  * eine WebAnwendung, welche die Definition von StyleSheets für Vertragsdaten ermöglicht
  * einen WebService, der für einen bestimmten Vertrag und ein StyleSheet die formatierten Daten liefert
  * einen MS Office Word Teil, der den Anwender bei der Anlage einer Druckvorlage unterstützt, indem aus den definierten StyleSheets ausgewählt werden kann. Für jedes ausgewählte StyleSheet wird in der Vorlage ein Feld mit der Feldfunktion INCLUDETEXT mit einer entsprechenden URL zu dem StyleSheet erzeugt.
  * einen MS Office Word Teil, der eine Vorlage für einen konkreten Vertrag aktualisiert. Dazu findet eine Anmeldung beim Webservice mit dem konkreten Vertrag statt. Dann werden die URLs aller INCLUDETEXT-Felder konkretisiert und alle Felder über MS Office Word aktualisiert.

Dafür haben wir natürlich jede Menge Makros in MS Office Word geschrieben, die wir portieren müssen.
Ich hoffe, das Verfahren ist einigermaßen klar geworden.

Nach einigem Ausprobieren muss ich jetzt aber erst mal einige grundlegende Fragen loswerden:
- Gibt es überhaupt eine entsprechende Feldfunktion in libre office? Bisher bin ich nicht fündig geworden.
- Kann ich das Verfahren für libre office so übernehmen?
- Gibt es in libre office vielleicht andere, geschicktere Lösungsmöglichkeiten?

Leider sind die Feldfunktionen in OpenOffice/LibreOffice bei weitem nicht so mächtig wie in MS Word.
Wenn die Felder mitten im Fließtext sitzen, hast Du schlechte Karten.
Stehen sie jedoch für einen Absatz, kannst Du Bereiche einfügen und verknüpfen.
Wenn der WebService-Aufruf aus Word erfolgt, kann man dies für LibreOffice/OpenOffice über eine Extension (Java) realisieren. Die würde dann auch die Aktualisierung der URL's für die Bereiche vornehmen.

Gruß Peter

Hallo Peter,

Peter Eberlein schrieb Monday, January 09, 2012 4:46 PM

Leider sind die Feldfunktionen in OpenOffice/LibreOffice bei weitem
nicht so mächtig wie in MS Word.
Wenn die Felder mitten im Fließtext sitzen, hast Du schlechte Karten.
Stehen sie jedoch für einen Absatz, kannst Du Bereiche einfügen und
verknüpfen.
Wenn der WebService-Aufruf aus Word erfolgt, kann man dies für
LibreOffice/OpenOffice über eine Extension (Java)
realisieren. Die würde
dann auch die Aktualisierung der URL's für die Bereiche vornehmen.

vielen Dank für deine Antwort.
Die Verknüpfung innerhalb eines Bereichs wäre auch genau das Richtige, wenn die Absatzmarke nicht wäre.
Es erscheint mir komisch, dass libreoffice diese Funktionalität nur in Zusammenhang mit einem Absatz anbietet, aber ich finde nichts anderes.

Ich versuche es jetzt über ein Makro und bin an dem Punkt, an dem ich den HTML-Text in das aktuelle Dokument einfügen will. Habe im Internet nur die Lösung über ein unsichtbares Dokument gefunden, das als HTML geöffnet wird. Dann wird der dargestellte Text dieses Dokuments selektiert und ins eigentliche Dokument transferiert.
Hier ist die Beispiellösung:
http://www.oooforum.org/forum/viewtopic.phtml?t=44717

Geht das wirklich nicht anders? Kann ich HTML-Text nicht konvertiert ins aktuelle Dokument einfügen?

Gruß Birgit

Hi Birgit,

Hallo Peter,

Peter Eberlein schrieb Monday, January 09, 2012 4:46 PM

Leider sind die Feldfunktionen in OpenOffice/LibreOffice bei weitem
nicht so mächtig wie in MS Word.
Wenn die Felder mitten im Fließtext sitzen, hast Du schlechte Karten.
Stehen sie jedoch für einen Absatz, kannst Du Bereiche einfügen und
verknüpfen.
Wenn der WebService-Aufruf aus Word erfolgt, kann man dies für
LibreOffice/OpenOffice über eine Extension (Java)
realisieren. Die würde
dann auch die Aktualisierung der URL's für die Bereiche vornehmen.

vielen Dank für deine Antwort.
Die Verknüpfung innerhalb eines Bereichs wäre auch genau das Richtige, wenn die Absatzmarke nicht wäre.
Es erscheint mir komisch, dass libreoffice diese Funktionalität nur in Zusammenhang mit einem Absatz anbietet, aber ich finde nichts anderes.

Ich versuche es jetzt über ein Makro und bin an dem Punkt, an dem ich den HTML-Text in das aktuelle Dokument einfügen will. Habe im Internet nur die Lösung über ein unsichtbares Dokument gefunden, das als HTML geöffnet wird. Dann wird der dargestellte Text dieses Dokuments selektiert und ins eigentliche Dokument transferiert.
Hier ist die Beispiellösung:
http://www.oooforum.org/forum/viewtopic.phtml?t=44717

Geht das wirklich nicht anders? Kann ich HTML-Text nicht konvertiert ins aktuelle Dokument einfügen?

Ich habs noch nicht ganz verstanden...
Das Programm setzt die URL für den mit dieser URL verknüpften Bereich. Dann kommt der Text doch automatisch rein (Quelle kann doc, html, rtf-Format sein). Das heißt Du brauchst programmatisch nichts mit dem XTransferable machen, höchsten noch eine Aktualisierung der Verknüpfung anstoßen.
Nebenbei bemerkt kannst Du die Bereiche auch in Textrahmen (analog Positionsrahmen MS Word) setzen, die dann auch irgendwo mitten im Dokument stehen können.

Falls Du die Option "Einfügen in Fließtext" brauchst, gibts auch hierfür zumindest programmatisch eine Lösung (http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/Text/Inserting_Text_Files)

Probiere die Bereiche mit den Verknüpfungen doch einfach mal aus, damit Du siehst, was ohne Programm machbar ist.

Gruß Peter

Hallo Peter,

Ich habs noch nicht ganz verstanden...
Das Programm setzt die URL für den mit dieser URL verknüpften
Bereich.
Dann kommt der Text doch automatisch rein (Quelle kann doc, html,
rtf-Format sein). Das heißt Du brauchst programmatisch nichts mit dem
XTransferable machen, höchsten noch eine Aktualisierung der
Verknüpfung
anstoßen.
Nebenbei bemerkt kannst Du die Bereiche auch in Textrahmen (analog
Positionsrahmen MS Word) setzen, die dann auch irgendwo mitten im
Dokument stehen können.

Falls Du die Option "Einfügen in Fließtext" brauchst, gibts
auch hierfür
zumindest programmatisch eine Lösung
(http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/Text/Inserting_Text_Files)

Ich brauche die Funktion im Fließtext, daher kommen die Bereiche mit Ihren Verknüpfungen nicht in Frage. Und leider fügt auch die vorgeschlagene Funktion InsertDocumentFromUrl nach dem Text automatisch ein Leerzeichen und eine Absatzmarke ein.
Kann ich das vielleicht irgendwie ausschalten?

Danke und Gruß Birgit

Hallo Birgit,

Hallo Peter,

Falls Du die Option "Einfügen in Fließtext" brauchst, gibts
auch hierfür
zumindest programmatisch eine Lösung
(http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/Text/Inserting_Text_Files)

Ich brauche die Funktion im Fließtext, daher kommen die Bereiche mit Ihren Verknüpfungen nicht in Frage. Und leider fügt auch die vorgeschlagene Funktion InsertDocumentFromUrl nach dem Text automatisch ein Leerzeichen und eine Absatzmarke ein.

Das stimmt nicht. Ich habe es eben probiert.

Setze mal eine Textmarke test und probiere dann folgenden Basic-Code:
Sub Main
bookmark = ThisComponent.bookmarks.getByName("test")
cursor=ThisComponent.getText.createTextCursorByRange(bookmark.anchor)
cursor.insertDocumentfromURL(ConvertToURL("c:\daten\test.odt"),Array())
End Sub

Gruß Peter

Hallo Peter,

Das stimmt nicht. Ich habe es eben probiert.

Setze mal eine Textmarke test und probiere dann folgenden Basic-Code:
Sub Main
bookmark = ThisComponent.bookmarks.getByName("test")
cursor=ThisComponent.getText.createTextCursorByRange(bookmark.anchor)
cursor.insertDocumentfromURL(ConvertToURL("c:\daten\test.odt")
,Array())
End Sub

> Ich brauche die Funktion im Fließtext, daher kommen die
Bereiche mit Ihren Verknüpfungen nicht in Frage. Und leider
fügt auch die vorgeschlagene Funktion InsertDocumentFromUrl
nach dem Text automatisch ein Leerzeichen und eine Absatzmarke ein.

Mein Testscript sah so aus:

Sub Main
  oText = thisComponent.getText ()
  oTextCursor = oText.createTextCursor
  oTextCursor.gotoStart (False)
  FileToInsert="http://…"
  oTextCursor.InsertDocumentFromUrl (FileToInsert, Array())
End Sub

Und dann gibt es ein Leerzeichen und ein Absatzzeichen nach dem eingefügten Text.
Aber bei deinem Beispiel mit einer Textmarke wird nur ein Leerzeichen angefügt, kein Absatzzeichen. Auch nicht schön, aber damit kann ich leben.

Damit hast du mein Problem gelöst - vielen Dank für deine Hilfe!!!

Gruß Birgit