获取文档打印时的页面覆盖率
运行
在Windows资源管理器中选中所有你要统计的pdf文件,把它们拖到源码文件上
也就是说,pageCoverage.py
接收至少一个参数,每个参数是一个文件名
运行完成时,变量ink
的数值代表使用的墨水能够涂满(100%覆盖率)的A4纸张的数量
通常,购买墨水/墨粉时会标明可打印页数,这个数值代表一个墨盒能(用单一颜色)把多少张A4普通纸以默认参数涂满5%,在现有的源码中,最后输出的三个数的前两个代表所有这些文件的平均页面覆盖率/对应多少页5%覆盖的A4纸,第三个数代表在我刚买的墨盒里这些墨水值多少钱
说明
在Windows下编写与测试,mac应该也能用,Linux需要修改一些并行的实现
个人购买打印机的意义在于使得能打印的东西都可以打印出来,提高生活品质,我总是在想我到底使用了多少墨水,但是找不到一个现有的工具,虽然知道墨水用量也没什么用,顶多看看商家有没有虚标,但是我还是想知道一下
实际的打印算法非常复杂且被各种专利保护,本项目作出以下假设:
- 没有打印边界
- 不会在打印大面积色块时减少墨水用量
- 不使用彩色墨水打印灰色部分
- 没有更改打印浓度/开启节约墨粉
- 过大的页面被缩小到A4
- 小型的页面按原样打印
- 亮度是各通道的平均
- 亮度按线性映射到墨水用量
- 没有废墨
尽管通用彩色打印至少有CMYK四色,但是在打印淡灰色的时候有可能会使用彩色墨水调制出黑色来提升打印质量,理论上,本项目在仅有黑色墨粉/墨水的打印机上打印灰度图像的场景下计算出精确值,但是本人使用CMYK四色epson打印机在普通纸上打印灰度的色情漫画,程序输出34%的页面覆盖率,标示250页的黑色墨盒在打印40页后耗尽,同时彩色墨盒大约消耗了一半(难以精确计量),理论与实践几乎完全契合,即这些数值在各种场景下都有一定的参考意义
为什么是色情漫画?因为正常的东西可以白嫖实验室打印机
没有在商品页面写支持无边界打印的打印机都存在打印边界,通常为3mm左右,也可能某一侧特别宽,请注意Adobe Acrobat DC默认开启「缩小过大的页面」,在缩放为96%的情况下墨水消耗会变为0.96^2倍
其他类型的文档暂无支持的计划,word等难以单凭python确定会被打印出来的内容,图片等不以页面为单位的文件需要额外的布局参数