This Python module can be used to convert files from Microsoft
Office to Postscript. Remember: To print out Postscript files from Microsoft Office you need a virtual Postscript printer.
Alternatively you can download this tool from here too.
import win32com.client, time, pythoncom
"""
MSOffice2PS - Microsoft Office to Postscript Converter 1.1
Makes a Postscript file from Word-, Excel- or Powerpoint.
Now with mutex support for Powerpoint. Because Powerpoint can
only run as a single instance. Line 57 must have a unique GUID.
You can create a new GUID via:
i
mport pythoncom
print pythoncom.CreateGuid()
usage:
first: import msoffice2ps in the script, where it should be used
then call the convert-function.
import msoffice2ps
msoffice2ps.word('wordfilename', 'psfilename', 'ps_printername')
msoffice2ps.excel('excelfilename', 'psfilename', 'ps_printername')
msoffice2ps.powerpoint('powerpointfilename', 'psfilename', 'ps_printername')
Dipl.-Ing. Mustafa Goermezer -> http://www.goermezer.de
"""
def word(wordfile, psfile, printer):
pythoncom.CoInitializeEx(pythoncom.COINIT_APARTMENTTHREADED)
myWord = win32com.client.DispatchEx('Word.Application')
myWord.Application.ActivePrinter = printer
myDoc = myWord.Documents.Open(wordfile, False, False, False)
myDoc.Saved=1
myWord.Application.NormalTemplate.Saved = 1
myWord.PrintOut(True, False, 0, psfile)
while myWord.BackgroundPrintingStatus > 0:
time.sleep(0.1)
myDoc.Close()
myWord.Quit()
del myDoc
del myWord
pythoncom.CoUninitialize()
def excel(excelfile, psfile, printer):
pythoncom.CoInitializeEx(pythoncom.COINIT_APARTMENTTHREADED)
myExcel = win32com.client.DispatchEx('Excel.Application')
myExcel.Application.AskToUpdateLinks = 0
Excel = myExcel.Workbooks.Open(excelfile, 0, False, 2)
Excel.Saved = 1
Excel.PrintOut(1, 5000, 1, False, printer, True, False, psfile)
Excel.Close()
myExcel.Quit()
del myExcel
del Excel
pythoncom.CoUninitialize()
def powerpoint(powerpointfile, psfile, printer):
from win32event import CreateMutex
from win32api import GetLastError
from winerror import ERROR_ALREADY_EXISTS
from sys import exit
#the guid in the next line must be unique !!!
handle = CreateMutex ( None, 1, '{8620EF5C-7ED7-4A46-834B-3C9220566F69}' )
if GetLastError ( ) == ERROR_ALREADY_EXISTS:
print 'Powerpoint conversion already working'
exit ( 1 )
pythoncom.CoInitializeEx(pythoncom.COINIT_APARTMENTTHREADED)
myPowerpoint = win32com.client.DispatchEx('Powerpoint.Application')
myPpt = myPowerpoint.Presentations.Open(powerpointfile, False, False, False)
myPpt.PrintOptions.PrintInBackground = 0
myPpt.PrintOptions.ActivePrinter = printer
myPpt.Saved = 1
myPpt.PrintOut(1, 5000, psfile, 0, False)
myPpt.Close()
#myPowerpoint.Quit()
del myPpt
#del myPowerpoint
pythoncom.CoUninitialize()