2010-08-26 20 views
5

我已经在CakePHP 1.3中安装了TCPDF,并使用它来生成QR码的PDF。这是一个非常简单的功能,可以创建一个A9大小的页面,两个字符串和一个QR码。 QR码适用于简单的网址(即'example.com/12345')。TCPDF QR码一直都不一样

我可以在浏览器中加载页面(使用Safari浏览器内置的PDF阅读器)。每次重新加载时,QR码都会稍微变化。模块尺寸是相同的,但数据元素变化很大。我正在使用“L”数据冗余设置。该字符串在每次调用时都完全相同,但QR更改。在看了一些重新加载后,我相信它只能循环3或4个变化。

现在这是真正伟大的部分,它正确扫描。 QR的每个排列结果都与QR Reader中的URL完全相同(iPhone4上的i-Nigma)

任何想法?我在做或失去一些真正愚蠢和明显的东西?提前致谢!

+0

更新:它运行在运行PHP 5.2.5的Win 2K3系统上。我开始怀疑它可能与此有关。我在TCPDF支持论坛上发现了另一个类似的东西。他们在他们的服务器上运行了演示脚本,它给出了相同的QR码模式。但是运行在许多其他服务器上的代码运行良好。 – 2010-08-27 00:18:17

回答

4

似乎TCPDF使用的QR码生成库使用稍微“懒惰”的创建QR码的方法。它从8种“掩码”模式中随机选择,看它是否使代码更好。如果它符合某个标准,它将使用随机选择的蒙版。这导致每次可能有不同的QR码。

显然谷歌使用更好的算法来选择面具。大概检查所有的面具,并选择最好的一个。这会产生可预测的结果,而不是随机选择的结果。

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

+0

我不确定TcPDF,但你*应该*能够改变这种行为。发生器内部的最佳做法是生成全部八个QR码,并根据最终罚分(根据ISO标准定义)确定哪一个最好。如果TcPDF无法实现这一点,则可以使用PHP QR码(http://phpqrcode.sourceforge.net/)并使用TcPDF中的绑定来使用它。 – Bell 2013-12-04 21:36:38

+0

所有的情况下,你不想依赖谷歌的愿望和突发奇想。 – Bell 2013-12-04 21:39:24