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

Posted

技术标签:

【中文标题】提前在python中获取打印文档后的页数【英文标题】:Getting in python in advance the number of pages after printing a document 【发布时间】:2017-01-05 18:02:00 【问题描述】:

我的打印机不支持双面打印,因此我基于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循环。

也许有解决方案可以帮助我获得结果页面的数量?

附:我使用的是 macOS Sierra 10.12.2 和 A4 纸。

【问题讨论】:

@sabbahillel 它不适用于 pdf、docx 等。 您是否能够打印到文本文件并在实际发送到输出之前使用 wc 获取文本文件的大小? 【参考方案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

【讨论】:

这是一个很好的解决方法,但我希望有一个通用的解决方案:)

以上是关于提前在python中获取打印文档后的页数的主要内容,如果未能解决你的问题,请参考以下文章

从打印服务器获取打印机总页数

在可打印文档的 <thead> 上使用 CSS 添加总页数指示器?

word中如何自动获取指定节的页数

word中如何自动获取指定节的页数?

word excel打印怎么打指定的页数

ubuntu取消启动打印log