"logische" Seitenzahl auslesen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Medrax
Beiträge: 4
Registriert: Do, 28.06.2007 12:27

"logische" Seitenzahl auslesen

Beitrag von Medrax »

Hallo zusammen,

gibt es eine Möglichkeit, die "logische" Seitenzahl einer Seite auszulesen? Unter logischer Seitezahl meine ich die Seitenzahl, die man bei einem manuellen Seitenumbruch der neuen Seitenvolage zuordnen kann. Also nicht die Seitenzahl, die man mit der getpage()-Methode erhält. Wenn das direkt nicht möglich sein sollte, könnte man dann evtl. ein Textfeld mit der Seitenzahl ansteuern und den Inhalt abfragen?

Vielen Dank im Vorraus.
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: "logische" Seitenzahl auslesen

Beitrag von komma4 »

ich verstehe die Frage nicht:

Code: Alles auswählen

print ThisComponent.getCurrentController.getViewCursor().getPage()
Das ist es nicht?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Medrax
Beiträge: 4
Registriert: Do, 28.06.2007 12:27

Re: "logische" Seitenzahl auslesen

Beitrag von Medrax »

Nein, genau das ist es nicht. Es gibt in OpenOffice Writer die Möglichkeit, bei einem manuellen Seitenumbruch für die nächste Seite eine neue Formatvorlage festzulegen. Dabei kann ebenfalls die Seitennummer geändert werden. Diese dort angegebene neue Seitenummer lässt sich nicht über getpage()-Methode auslesen. Hier wird die tatsächliche Seite im Dokument zurückgegeben, ich benötige aber eben die neu festgelegte "logische" Seitennummer.

Wenn man auf der neuen Seite den Feldbefehl "Seitennummer" einfügt, wird die festgelegte "logische" Nr. angezeigt. Die erscheint bei mir in der Fußzeile innerhalb einer Tabelle. Z.z. lese ich einfach die entsprechende Zelle der Tabelle aus. Das Problem dabei ist nur, dass ich dabei nur die logische Seitenummer der letzten Seite erhalte (eben weil die Seitenummer in der Fußzeile steht). Dann rechne ich das ganze über PageCount und getpage() auf die jeweilige Seite zurück. Dieses Verfahren funktioniert jedoch nicht, wenn mehrere manuelle Seitenumbrüche mit verschiedenen Seitenummern innerhalb eines Dokuments verwendet werden.

Demenstprechend wollte ich fragen, ob es die Möglichkeit gibt, die logische Seitennummer für jede Seite direkt auszulesen?
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: "logische" Seitenzahl auslesen

Beitrag von komma4 »

jetzt habe ich die Frage verstanden.


untested: der manuelle Umbruch (ControlCharacter PAGEBREAK) müsste auf der Seite zu finden sein - und dort müsste die Eigenschaft stehen.

Andrew hat dieses Beispiel in seinem Makrodokument - versuch's mal...
Listing 7.34: Find and remove page breaks.

Code: Alles auswählen

Sub FindPageBreaks
  REM Author: Andrew Pitonyak
  Dim iCnt As Long
  Dim oCursor as Variant
  Dim oText As Variant
  Dim s As String

  oText = ThisComponent.Text
  oCursor = oText.CreateTextCursor()
  oCursor.GoToStart(False)
  Do
    If NOT oCursor.gotoEndOfParagraph(True) Then Exit Do
    iCnt = iCnt + 1
    If NOT IsEmpty(oCursor.PageDescName) Then
      s = s & "Paragraph " & iCnt & " has a new page to style " & _
               oCursor.PageDescName & CHR$(10)
      oCursor.PageDescName = ""
    End If
    If oCursor.BreakType <> com.sun.star.style.BreakType.NONE Then
      s = s & "Paragraph " & iCnt & " has a page break" & CHR$(10)
      oCursor.BreakType = com.sun.star.style.BreakType.NONE
    End If
  Loop Until NOT oCursor.gotoNextParagraph(False)
  MsgBox s  
End Sub
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Medrax
Beiträge: 4
Registriert: Do, 28.06.2007 12:27

Re: "logische" Seitenzahl auslesen

Beitrag von Medrax »

Hallo nochmal,

vielen Dank für deine Hilfe, hast mir sehr geholfen.

Die Seitenzahl lässt sich ganz einfach über die Eigenschaft:

Code: Alles auswählen

oCursor.PageNumberOffset
auslesen.
Antworten