【发布时间】:2020-04-05 04:58:16
【问题描述】:
我正在使用带有 openpdf 的飞碟 pd 来生成 pdf。 我使用 thymleaf 3 从 htm 文件生成 pdf。
一切正常,但不是测试。
我的想法是创建一个生成 pdf 文件的测试方法...之后我将 ButeArrayStream 转换为 byte[] ...最后测试使用 byte[] 生成的 byte[] 我从以前的编译。
但是,我发现 ItextRenderer.createPdf(htmlContent) 每次生成不同的 byte[]。
正常吗?有没有办法每次都得到相同的字节[]?
【问题讨论】:
-
注意:html内容每次都是一样的……所以不是thymleaf生成不同的html……真的是ItextRenderer的createPdf方法。
-
这可能是正常的,我希望它包含元数据,例如渲染时间戳。你能检查一下 PDF 看看有什么不同吗?
-
出于测试的目的,如果你想测试自己的代码而不是飞碟,测试到PDF渲染器的HTML输入应该足够了。
-
比较字节,可能是十六进制的可视化。也许变化很小。例如,在开始时有几个字节未指定,通常用非 ASCII 填充,因此 Unix 将数据识别为二进制。但是,如果长度也不同,作为内部地址的内部数字也会被移动。
-
或者,可以将两个 pdf 都渲染为图像,应用一些智能图像操作,并检查差异。
标签: java thymeleaf integration-testing flying-saucer openpdf