提前获取python打印文档后的页数

时间:2017-01-05 18:02:01

标签: python macos unix printing printers

我的打印机不支持双面打印,因此我基于lpr实用程序在Python中创建了一个简单的脚本。它会逐页打印文档并延迟,在此期间我手动翻书:

from sys import argv
from subprocess import run

assert(len(argv) == 2)

i = 1
try:
  while True:
    opt = 'page-ranges={}'.format(i)
    i += 1
    print(run(['lpr', '-o', opt, argv[1]]))
    f = input('> Ready to print next page?\n'
              '(Press ENTER or CTRL+C to exit) ')
except KeyboardInterrupt:
  print()

问题是我事先并不知道最终打印文档的页数,所以我不知道何时应该中断while循环。

也许是否有解决方案可以帮助我获得结果页数?

P.S。我正在使用macOS Sierra 10.12.2和A4文件。

1 个答案:

答案 0 :(得分:1)

计算pdf

from pyPdf import PdfFileReader
pdf = PdfFileReader(open('path/to/file.pdf','rb'))
pdf.getNumPages()

计算文档

from win32com.client import Dispatch
#open Word
word = Dispatch('Word.Application')
word.Visible = False
word = word.Documents.Open(doc_path)

#get number of sheets
word.Repaginate()
num_of_sheets = word.ComputeStatistics(2)

请参阅以下页面了解更多详情 感谢@Josh& @a_guest

pyPDF - Retrieve page numbers from document

Number of pages of a word document with Python