Печать на Python из python32

#python #win32com

#python #win32com

Вопрос:

Я не могу заставить Python печатать документ word. То, что я пытаюсь сделать, это открыть документ Word, распечатать его и закрыть. Я могу открыть Word и документ Word:

 import win32com.client

msword = win32com.client.Dispatch("Word.Application") 
msword.Documents.Open("X:BackofficeAdamchecklist.docx")

msword.visible= True
  

Я попытался рядом с print

 msword.activedocument.printout("X:BackofficeAdamchecklist.docx")
  

Я получаю сообщение об ошибке «распечатка недопустима».

Может ли кто-нибудь пролить некоторый свет на то, как я могу распечатать этот файл из Python. Я думаю, это может быть так же просто, как изменить слово «распечатка». Спасибо, я новичок в Python.

Ответ №1:

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 не являются.

Комментарии:

1. Хорошо, я знаю, что это глупый вопрос, но мне просто нужно ввести диапазон, чтобы напечатать все, что нравится

2. ms.word.activedocument.printout (диапазон = wdprintalldocument) или нужно вводить каждый символ сверху?

3. Я получаю исключение.’, (0, ‘Microsoft Word’, «‘Распечатка’ не является свойством».

4. Я отредактировал свой ответ: вам нужно использовать распечатку с верблюжьим регистром.

Ответ №2:

Вероятно, вам придется экранировать символ обратной косой черты с помощью \ :

 msword.Documents.Open("X:\Backoffice\Adam\checklist.docx")
  

РЕДАКТИРОВАТЬ: Объяснение

Обратная косая черта обычно используется для объявления специальных символов. Например n , это специальный символ для новой строки. Если вам нужен литерал , вам нужно его экранировать.

Комментарии:

1. Кроме того, вы также можете использовать необработанные строки, где такие специальные символы невозможны: "X:\Backoffice\Adam" тогда было бы равно r"X:BackofficeAdam" . Это весьма полезно для разрешения копирования-вставки.

2. Спасибо, я могу открыть его, он печатает, что я не могу выполнить

3. Word открывается, и файл открывается, но функция печати не выполняется?