从python32打印的Python
我想用Python打印一个Word文档,但一直没成功。我想做的就是打开这个Word文档,打印它,然后关闭它。我可以打开Word和这个文档:
import win32com.client
msword = win32com.client.Dispatch("Word.Application")
msword.Documents.Open("X:\Backoffice\Adam\checklist.docx")
msword.visible= True
我尝试了接下来的打印方法:
msword.activedocument.printout("X:\Backoffice\Adam\checklist.docx")
但是我遇到了一个错误,提示“打印输出无效”。
有没有人能帮我解释一下,怎么才能用Python打印这个文件?我觉得可能只需要改一下“打印输出”这个词就行。谢谢,我刚开始学Python。
2 个回答
1
你可能需要用两个反斜杠 \\
来表示一个反斜杠 \
:
msword.Documents.Open("X:\\Backoffice\\Adam\\checklist.docx")
编辑:解释
反斜杠通常用来表示一些特殊字符。比如 \n
是表示换行的特殊字符。如果你想要一个实际的反斜杠 \
,你就需要用反斜杠来转义它。
2
msword.ActiveDocument
是用来获取当前正在使用的文档的。PrintOut
方法则是用来打印这个文档的,它并不需要你提供文档的文件名作为参数。
来自 http://msdn.microsoft.com/en-us/library/aa220363(v=office.11).aspx 的说明:
expression.PrintOut(Background, Append, Range, OutputFileName, From, To, Item,
Copies, Pages, PageType, PrintToFile, Collate, FileName, ActivePrinterMacGX,
ManualDuplexPrint, PrintZoomColumn, PrintZoomRow, PrintZoomPaperWidth,
PrintZoomPaperHeight)
具体来说,Word 正在尝试把你的文件名当作一个布尔值 Background
来使用,这个值可以设置为 True
,表示在后台打印。
补充说明:
大小写是有区别的,而且这个错误有点奇怪。msword.ActiveDocument.Printout()
应该可以正常打印,而 msword.ActiveDocument.printout()
会报错,提示 'PrintOut' 不是一个属性。
我觉得内部发生的情况是,当你没有正确匹配属性的大小写时,Python 会尝试进行补偿,但对于方法的处理就不太对了。大概是这样的。ActiveDocument
和 activedocument
可以互换使用,但 PrintOut
和 printout
就不行。