5

我已经在 CakePHP 1.3 中安装了 TCPDF,并使用它来生成一个二维码的 PDF。这是一个非常简单的函数,可以创建一个 A9 大小的页面、两个字符串和一个 QR 码。QR 码是一个简单的 url(即'example.com/12345')。

我可以在浏览器中加载页面(Safari 使用它内置的 PDF 阅读器。)每次重新加载时,二维码都会略有变化。模块尺寸相同,但数据元素发生显着变化。我正在使用“L”数据冗余设置。每次调用的字符串都完全相同,但 QR 会发生变化。在观看了多次重新加载后,我相信它只循环了 3 或 4 种变化。

现在这是真正伟大的部分,它可以正确扫描。QR 的每个排列都会在 QR 阅读器中产生完全相同的 url(iPhone4 上的 i-Nigma)

有任何想法吗?我是在做还是错过了一些非常愚蠢和明显的事情?提前致谢!

4

2 回答 2

4

似乎 TCPDF 使用的 QR 码生成库使用了一种稍微“懒惰”的方法来创建 QR 码。它从 8 个“掩码”模式中随机选择一个,看看它是否能让代码变得更好。如果它满足某个标准,它会使用随机选择的掩码。这导致每次可能产生不同的二维码。

显然谷歌使用更好的算法来选择掩码。可能会检查所有口罩并选择最好的口罩。这将导致可预测的结果,而不是随机选择的结果。

我将调用 Google Chart API 来检索 PNG,然后将其放在我的 PDF 中,而不是使用内置的 QR 生成器。

于 2010-08-27T19:21:04.077 回答
1

在 tcpdf 版本 6.2.26 上,运行正常的一种解决方案是更改文件“include/barcodes/qrcode.php”的第 239 行:define('QR_FIND_FROM_RANDOM', 2);

并替换为下一个:define('QR_FIND_FROM_RANDOM', none);

于 2019-12-01T14:48:33.973 回答