从python32打印的Python

1 投票
2 回答
2647 浏览
提问于 2025-04-17 05:33

我想用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 会尝试进行补偿,但对于方法的处理就不太对了。大概是这样的。ActiveDocumentactivedocument 可以互换使用,但 PrintOutprintout 就不行。

撰写回答