RSS category feeds

RSS site feeds

More related

Thanks to...

Home arrow Script Collection arrow Microsoft Office arrow Excel to PDF Converter as a Windows NT/2000 Service
Excel to PDF Converter as a Windows NT/2000 Service PDF Print E-mail

This script is designed as a Windows 2000/NT Service and converts incoming Excel Workbooks in a directory to PDF. After installing this script with python scriptname.py install you will find a Service called "Excel2PDF" in the Service Control Manager (Services). To remove the Service do a python scriptname.py remove.

One Problem exists: The Service runs only when a user is logged in. If someone knows the problem please mail it via the contact webform.

To get the usage information start this script with the python interpreter as usually.
 
import win32serviceutil
import win32service
import win32event
import win32gui
import time
import win32com.client
import pythoncom
import os
 
class XLS2PDFService(win32serviceutil.ServiceFramework):
    _svc_name_ = "xls2pdf Service"
    _svc_display_name_ = "Excel2PDF"
 
    def __init__(self, args):
       win32serviceutil.ServiceFramework.__init__(self, args)
       self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)
 
    def SvcStop(self):
       self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
       win32event.SetEvent(self.hWaitStop)
       win32gui.MessageBox(0, "XLS2PDF Service has been stopped" , "XLS2PDF Status" , 0 )
 
    def SvcDoRun(self):
        gscommand = 'c:\\gs\\gs8.15\\bin\\gswin32c.exe -sDEVICE=pdfwrite -r300 \
        -dNOPAUSE -dBATCH -dSAFER -sPAPERSIZE=a4 \
        -sOutputFile="'+path_to_watch+filename+'.pdf" "'+tmpfile+'"'
 
        path_to_watch = 'd:\\share\\'
        tmpdir = tempfile.mkdtemp()
        before = dict ([(f, None) for f in os.listdir (path_to_watch)])
        win32gui.MessageBox(0, "XLS2PDF has been started" , "XLS2PDF Status" , 0 )
        while 1 :
            time.sleep (0.1)
            after = dict ([(f, None) for f in os.listdir (path_to_watch)])
            added = [f for f in after if not f in before]
            if added and added[0][-3:]=='xls':
                print os.tmpfile()
                filename = added[0]
                tmpfile = tmpdir + '\\'+filename+'.ps'
                if filename[-3:]=='xls':
                    pythoncom.CoInitializeEx(pythoncom.COINIT_APARTMENTTHREADED)
                    myExcel = win32com.client.DispatchEx('Excel.Application')
                    Excel = myExcel.Workbooks.Open(path_to_watch + filename, 0, False, 2)
                    Excel.PrintOut(1, 5000, 1, False, 'ServPDF', True, False, tmpfile)
                    Excel.Saved = 1
                    Excel.Close()
                    myExcel.Quit()
                    del Excel
                    del myExcel
                    os.popen(gscommand)
                    #os.remove(path_to_watch+filename)
                    os.remove(tmpfile)
                    pythoncom.CoUninitialize()
            before = after
 
if __name__=='__main__':
    win32serviceutil.HandleCommandLine(XLS2PDFService)
 
Last Updated ( Thursday, 02 February 2006 )
 
< Prev   Next >

Feedback

Comments

  • I tried this for outlook 2007 and it doesn't work, but python doesn't have an er... More...
  • I never understood why people don't include the import statements at the top of ... More...
  • Thanks friend! ;-) Work really apprecciated from italy! More...
  • y am I not being allowed to view more on catia scripts. More...
  • eval('item.%s' % attribute) should be written as getattr(item, attribute) More...

Login Form






Lost Password?
No account yet? Register

My prefered Python IDE

My prefered Python editor is Pyscripter from MMExperts. It is not only an editor. Pyscripter is a full Python IDE including (remote) debugging, a class browser, and all other nice helpers which a full featured IDE needs.

Do you have a script for me ?

Do you have an interesting Python script which does some really cool thing on Windows ? Please post them to this site. It`s very simple - simply copy&paste it to this form. No login is requiered.

Hint: For syntax highlighting and correct Python intendation place your code between html tags <pre> and </pre>.

My prefered web framework

My prefered web framework for developing web applications is Django. Django calls itself The web framework for perfectionists with deadlines. It is a really fast, scalable and (thanks Python) the sexiest web framework of the world.