(另请参阅下面的更新!)

我在Linux上用一个shell脚本做同样的事情ImageMagick的compare命令

pdftk实用程序

Ghostscript(可选)

(将其移植到DOS/Windows的.bat批处理文件将非常容易。)

我的应用程序创建了一些“已知良好”的参考PDF。代码更改后新生成的PDF将与这些参考PDF进行比较。比较是逐像素进行的,并保存为新的PDF格式。在这个PDF中,所有不变的像素都被画成白色,而所有不同的像素都被画成红色。在

以下是构建基块:

pdftk公司

使用此命令将多页PDF文件拆分为多个单页PDF:pdftk reference.pdf burst output somewhere/reference_page_%03d.pdf

pdftk comparison.pdf burst output somewhere/comparison_page_%03d.pdf

比较

使用此命令为每个页面创建一个“diff”PDF页面:

^{pr2}$

幽灵脚本

由于自动插入元数据(例如当前日期+时间),PDF输出不能很好地用于基于MD5hash的文件比较。在

如果您想自动发现由纯白页组成的所有案例,还可以使用bmp256输出设备转换为无元数据位图格式。您可以对原始PDF(参考和比较)或diff PDF页面执行此操作:gs \

-o reference_diff_page_001.bmp \

-r72 \

-g595x842 \

-sDEVICE=bmp256 \

reference_diff_page_001.pdf

md5sum reference_diff_page_001.bmp

如果MD5sum是您期望的595x842 PostScript点的全白页,那么单元测试通过了。在

更新:

我不知道为什么我之前没有想到从ImageMagick compare生成一个直方图输出。。。在

以下是链接两个不同命令的命令管道:第一个与上面的compare相同,它生成“白色像素相等,红色像素不同”格式,只输出ImageMagick内部miff格式。它不写入文件,而是写入stdout。在

第二种方法使用convert读取stdin,生成直方图并以文本形式输出结果。将有两条线:

表示白色像素数的一个

另一个表示红色像素的数量。在

接下来是:compare \

reference.pdf \

current.pdf \

-compose src \

miff:- \

| \

convert \

- \

-define histogram:unique-colors=true \

-format %c \

histogram:info:-

样本输出:56934: (61937, 0, 7710,52428) #F1F100001E1ECCCC srgba(241,0,30,0.8)

444056: (65535,65535,65535,52428) #FFFFFFFFFFFFCCCC srgba(255,255,255,0.8)

我认为这种类型的输出非常适合于自动单元测试。如果你计算这两个数字,你可以很容易地计算出“红色像素”的百分比,甚至可以根据某个阈值决定返回通过或失败(如果出于某种原因不一定需要“零红色”)。在

绘制图形可以使用什么python函数_如何对绘制PDF图形的Python函数进行单元测试?...相关推荐

  1. python设置笔大小的函数_小朋友们,你试过用Python语言绘制小猪佩奇吗?来完成你的第一个创作吧!...

    在上一章中,我们用海龟绘图绘制了机器猫的卡通图像.在本章中,我们介绍如何用海龟绘图来绘制小朋友们喜欢的另一个卡通形象--小猪佩奇. 1 程序分析 我们先来看一下小猪佩奇的样子,如图1所示. 图1 观察 ...

  2. python怎么用gamma函数_如何通俗的理解伽马(gamma)函数

    如何通俗的理解伽马(gamma)函数 - 直觉,求导和示例 我为什么要在乎garmma分布? 使用伽马函数定义了许多概率分布,例如伽马分布,Beta分布,狄利克雷分布,卡方分布和学生t分布等. 对于数 ...

  3. python key=lambda函数_使用’key’和lambda表达式的python max函数

    我来自OOP背景,尝试学习Python.我使用的是max函数,该函数使用lambda表达式返回Player类型的实例,其中players列表中的totalScore最大. def winner(): ...

  4. robotframework调用python类方法_【RF基础】RF调用Python函数基础

    本文简单介绍了如何在robot里面调用一个python写的函数. 构建 我们在D盘下创建两个文件,一个叫pyfile.py,用于编写python函数,另外一个叫test.txt,编写我们的测试用例. ...

  5. coalesce函数_什么是SQL Server COALESCE()函数?

    coalesce函数 Hey, folks! In this article, we will be focusing on SQL Server COALESCE() function. 嘿伙计! ...

  6. 类的应用python平均分_【数据科学系统学习】Python # 数据分析基本操作[四] 数据规整化和数据聚合与分组运算...

    本篇内容为整理<利用Python进行数据分析>,博主使用代码为 Python3,部分内容和书本有出入. 在前几篇中我们介绍了 NumPy.pandas.matplotlib 三个库的基本操 ...

  7. cmd中如何运行python文件_在cmd中运行.py文件: python的操作步骤

    在cmd中运行.py文件: python的操作步骤 1 打开cmd, 不改变运行的目录: 输入python 空格  调试好的python文件路径 或者python 空格  将python文件拖入cmd ...

  8. 阿里巴巴python教程_我敢打赌,这份python入门教程看了绝对有用

    前段时间用Python刷了一些题,把刷题的过程遇到的一些小知识点总结了一下,都是一些比较基础的知识点,特别适合一些刚入门的新手看lambda表达式 lambda表达式是起到一个函数速写的作用.允许在代 ...

  9. lambda调用函数_从另一个Lambda函数调用AWS Lambda函数

    lambda调用函数 In this article, I am going to explain how to create an AWS Lambda function and then call ...

  10. python 监测_理解监测指标,并使用Python去监测它们

    通过学习这些关键的术语和概念来理解 Python 应用监测. 当我***次看到术语"计数器counter"和"计量器gauge"和使用颜色及标记着"平 ...

最新文章

  1. mysql创建表时添加范式_MySql三大范式与数据库设计和表创建常用语句
  2. [Ubuntu] bash shell soft-link error: Too many levels of symbolic links
  3. python xlrd模块_Python中xlrd模块解析
  4. date类型_Chapter 01. 常见数据类型概述 Overview of Common Data Types
  5. 【转】现代浏览器的工作原理
  6. CI框架的使用-环境搭建
  7. 64qam带宽计算_滚降系数为0.5的64QAM信号,数据速率若为_____,则带宽为______。
  8. ov5640帧率配置_OV5640摄像头的数据处理配置流程(一)
  9. 读《摄影测量与遥感概论》有感
  10. Python学习:IndentationError: expected an indented block
  11. java json字符串转化为list
  12. electron坑: 缩小放大快捷键
  13. 微商怎么引流?不懂这些就引不来流量!
  14. html中的字体英文名称
  15. 游戏安全与反外挂:加固工具介绍
  16. 0x800700E1: 无法成功完成操作,因为文件包含病毒 解决方法
  17. Copernicus Open Access Hub哥白尼开放中心
  18. FDTD学习之偶极子光源的purcell值
  19. RNN编码器-解码器
  20. IDA-逆向分析-工具教程-IDA简介-反汇编工具-功能窗口

热门文章

  1. 牛客-埃森哲杯第十六届上海大学程序设计联赛-A-Wasserstein Distance
  2. ACM连续输入多组数据问题
  3. 从一到无穷大 #4 Lossy compression
  4. 高数笔记(一):函数与极限,无穷大与无穷小
  5. mybatis-plus 有了这只小鸟,从此告别加班福报
  6. 学生喂养三种宠物:猫、狗和鸟
  7. 诺基亚5800XM触控音乐全解析
  8. List转Map思想的妙用
  9. 【黑金ZYNQ7000系列原创视频教程】07.自定义IP——定制RTC IP实验
  10. 项目经理如何做好项目数据分析?