Danny.OOo.PrintToWriter.py
From Apache OpenOffice Wiki
This makes it easy and convenient to print a bunch of text into a Writer document.
See the example routine in the module that shows how easy this module is to use, and how useful it can be.
#**********************************************************************
#
# Danny.OOo.PrintToWriter.py
#
# This makes it easy and convenient to print a bunch of text into
# a Writer document.
#
#**********************************************************************
# Copyright (c) 2003-2004 Danny Brewer
# d29583@groovegarden.com
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# See: http://www.gnu.org/licenses/lgpl.html
#
#**********************************************************************
# If you make changes, please append to the change log below.
#
# Change Log
# Danny Brewer Revised 2004-06-05-01
#
#**********************************************************************
# OOo's libraries
import uno
# Danny's libraries
from Danny.OOo.OOoLib import StarDesktop
com_sun_star_text_ControlCharacter_PARAGRAPH_BREAK = uno.getConstantByName( "com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK" )
com_sun_star_text_ControlCharacter_LINE_BREAK = uno.getConstantByName( "com.sun.star.text.ControlCharacter.LINE_BREAK" )
com_sun_star_text_ControlCharacter_HARD_HYPHEN = uno.getConstantByName( "com.sun.star.text.ControlCharacter.HARD_HYPHEN" )
com_sun_star_text_ControlCharacter_SOFT_HYPHEN = uno.getConstantByName( "com.sun.star.text.ControlCharacter.SOFT_HYPHEN" )
com_sun_star_text_ControlCharacter_HARD_SPACE = uno.getConstantByName( "com.sun.star.text.ControlCharacter.HARD_SPACE" )
com_sun_star_text_ControlCharacter_APPEND_PARAGRAPH = uno.getConstantByName( "com.sun.star.text.ControlCharacter.APPEND_PARAGRAPH" )
class PrintToWriter:
"""A class which allows conveniently printing stuff into a Writer document.
Very useful for debugging, general output purposes, or even for creating reports."""
def __init__( self ):
self.oWriterDoc = StarDesktop.loadComponentFromURL( "private:factory/swriter", "_blank", 0, () )
self.oWriterText = self.oWriterDoc.getText()
self.oWriterCursor = self.oWriterText.createTextCursor()
def writeLn( self, *args ):
if len( args ) > 0:
apply( self.write, args )
self.writeParagraphBreak()
def write( self, arg1, *argsRest ):
self.writeOne( arg1 )
for arg in argsRest:
self.writeTab()
self.writeOne( arg )
def writeOne( self, arg, bAbsorb=False ):
self.writeString( str( arg ), bAbsorb )
def writeTab( self, bAbsorb=False ):
self.writeString( "\t", bAbsorb )
def writeParagraphBreak( self, bAbsorb=False ):
self.writeControlCharacter( com_sun_star_text_ControlCharacter_PARAGRAPH_BREAK, bAbsorb )
def writeString( self, cString, bAbsorb=False ):
self.oWriterText.insertString( self.oWriterCursor, cString, bAbsorb )
def writeControlCharacter( self, nCtrlChar, bAbsorb=False ):
self.oWriterText.insertControlCharacter( self.oWriterCursor, nCtrlChar, bAbsorb )
def example_PrintToWriter():
"""An example of how to use the PrintToWriter class to trivially create
a new Writer document, and write out text into it."""
oOutput = PrintToWriter()
oOutput.writeLn( "Hello World" )
oOutput.write( "String", 123, 456.23, True )
oOutput.writeLn()
oOutput.writeLn()
oOutput.writeLn( "Tab delimited values..." )
oOutput.write( 123 )
oOutput.writeTab()
oOutput.write( 456 )
oOutput.writeTab()
oOutput.write( 789 )
oOutput.writeLn()
oOutput.write( 465 )
oOutput.writeTab()
oOutput.write( 522 )
oOutput.writeTab()
oOutput.write( 835 )
oOutput.writeLn()
oOutput.write( 886 )
oOutput.writeTab()
oOutput.write( 164 )
oOutput.writeTab()
oOutput.write( 741 )
oOutput.writeLn()