Seite 1 von 1

Writer: Dokument neu layouten / korrekte Seitenzahl finden

Verfasst: Fr 20. Mai 2016, 11:11
von martho
Hallo!

Ich verwende diesen C++-Code, um die Seitenzahl in einem Writer-Doc zu erhalten:

Code: Alles auswählen

Reference<XModel> rModel (rDoc, UNO_QUERY);
Reference<XTextViewCursorSupplier> rCurSup (rModel->getCurrentController(), UNO_QUERY);
Reference<XPageCursor> rCursor (rCurSup->getViewCursor(), UNO_QUERY);
rCursor->jumpToLastPage();
return rCursor->getPage();
Das funktioniert solala, denn: Wenn ich vorher etwas eingefügt habe und das LibreOffice-Fenster gerade im Hintergrund ist, wird die falsche Anzahl von Seiten zurückgegeben. Sieht man auch schön, wenn man LibreOffice in den Vordergrund holt: Dann steht noch kurz die falsche Seitenzahl da, bevor diese aktualisiert wird.

Wir kann ich die Aktualisierung erzwingen, ohne das Fenster (manuell) in den Vordergrund holen zu müssen? Ich habe versucht:

Code: Alles auswählen

Reference <XTextDocument> rTxtDoc ( rDoc, UNO_QUERY );		
rTxtDoc->reformat();
Und auch:

Code: Alles auswählen

Reference<XModel> rModel(rDoc, UNO_QUERY);
rModel->lockControllers();
rModel->unlockControllers();
... alles ohne Effekt, die Seitenzahl bleibt falsch.

Re: Writer: Dokument neu layouten / korrekte Seitenzahl finden

Verfasst: Fr 20. Mai 2016, 12:51
von musikai
In Basic bekommt man die Gesamtseitenzahl auch mit:

Code: Alles auswählen

ThisComponent.CurrentController.PageCount

Re: Writer: Dokument neu layouten / korrekte Seitenzahl finden

Verfasst: Mi 25. Mai 2016, 09:02
von martho
Danke für Deine Antwort. Das funktioniert wesentlich besser als mit XPageCursor zu arbeiten - danke!