page number Stefan Wunderlich Tom Schindl How do I add a page number to the header I need to put page number in the footer of each page of a writer document by using java UNO api. From now, I'm able to set text into the headerText, but I don't know how to get current page number and I need to put page number in the footer of each page of a writer document by using java UNO api. From now, I'm able to set text into the headerText, but I don't know how to get current page number and total pages number.total pages number.

This should do the trick

XPropertySet xPropertySet = null; try { // Turn on the header XStyleFamiliesSupplier xSupplier = (XStyleFamiliesSupplier) UnoRuntime.queryInterface( XStyleFamiliesSupplier.class, xTextDoc); XNameAccess xNameAccess = xSupplier.getStyleFamilies(); XNameContainer xStyleCollection = (XNameContainer) UnoRuntime.queryInterface( XNameContainer.class, xNameAccess.getByName("PageStyles") ); xPropertySet = (XPropertySet) UnoRuntime.queryInterface( XPropertySet.class, xStyleCollection.getByName("Standard") ); xPropertySet.setPropertyValue("HeaderIsOn", new Boolean(true) ); // Fill in the text XText headerText = (XText) UnoRuntime.queryInterface( XText.class, xPropertySet.getPropertyValue("HeaderText") ); XTextCursor headerCursor = headerText.createTextCursor(); XMultiServiceFactory xDocMSF = (XMultiServiceFactory) UnoRuntime.queryInterface( XMultiServiceFactory.class, xTextDoc ); Object pageCount = xDocMSF.createInstance( "com.sun.star.text.TextField.PageCount" ); XTextContent pageCountTC = (XTextContent) UnoRuntime.queryInterface( XTextContent.class, pageCount ); XPropertySet pageCountPS = (XPropertySet) UnoRuntime.queryInterface( XPropertySet.class, pageCount ); pageCountPS.setPropertyValue( "NumberingType", new Short(com.sun.star.style.NumberingType.ARABIC) ); headerText.insertTextContent( headerCursor, pageCountTC, true ); } catch (Exception e) { // error handling }
Initial version (summed up from mailling list)