#!/bin/env python #copyright ReportLab Inc. 2002 #all rights reserved #$Header: /rl_home/repository/rlextra/bindings/com/rl_com_wrapper.py,v 1.1 2003/01/20 23:18:28 andy Exp $ __version__='''$Id: rl_com_wrapper.py,v 1.1 2003/01/20 23:18:28 andy Exp $ ''' __doc__="""experimental COM wrapper around ReportLab Enterprise API""" import os from rlextra.rml2pdf import rml2pdf from reportlab.lib.utils import getStringIO class ReportServer: _public_methods_ = [ 'double', 'convertRmlToPdfInMemory', 'convertRmlFileToPdfFile' ] _reg_progid_ = 'ReportLab.ReportServer' _reg_clsid_ = '{3A9DD703-93F6-4F95-9539-9B84E092936C}' def double(self, num): "Test method to check server works" return 2 * num def convertRmlToPdfInMemory(self, rmlText): rmlText = rmlText.encode('latin-1') # de-unicode it outfile = getStringIO() rml2pdf.go(rmlText, outputFileName=outfile) return outfile.getvalue().decode('latin-1') def convertRmlFileToPdfFile(self, rmlFileName, pdfFileName): txt = open(rmlFileName, 'r').read() doc = rml2pdf.go(txt, outputFileName = pdfFileName) return 1 if __name__=='__main__': import win32com.server.register win32com.server.register.UseCommandLine(ReportServer)