Difference between revisions of "Danny.OOo.PrintToWriter.py"

From Apache OpenOffice Wiki
Jump to: navigation, search
(Added code from oooforum.)
 
(Adding categories)
 
Line 129: Line 129:
  
 
</source>
 
</source>
 +
[[Category:Extensions]]
 +
[[Category:Python]]
 +
[[Category:Uno]]

Latest revision as of 19:59, 17 February 2015

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()
Personal tools