2010-08-26 3 views
5

У меня установлен TCPDF в CakePHP 1.3, и я использую его для создания PDF-кода QR-кода. Это очень простая функция, которая создает страницу размера A9, две строки и один QR-код. QR-код предназначен для простого URL-адреса (например, example.com/12345).TCPDF QR-код разный все время

Я могу загрузить страницу в браузере (Safari, используя встроенный PDF-ридер). Каждый раз, когда я его перезагружаю, QR-код изменяется незначительно. Размеры модуля одинаковы, но элементы данных значительно меняются. Я использую настройку избыточности данных «L». Строка одинакова для каждого вызова, но QR изменяется. После просмотра нескольких перезагрузок, я считаю, что он циклически проходит только 3 или 4 варианта.

Теперь вот действительно большая часть, она сканирует правильно. Каждая перестановка QR дает точно такой же url в QR Reader (i-Nigma на iPhone4)

Любые идеи? Я делаю или пропускаю что-то действительно немое и очевидное? Заранее спасибо!

+0

Обновление: оно размещается на системе Win 2K3 с PHP 5.2.5. Я начинаю подозревать, что это может быть связано с этим. Я нашел еще одно упоминание о чем-то подобном на форуме поддержки TCPDF. У них был демонстрационный скрипт, запущенный на их сервере, и он давал те же изменения QR-шаблонов. Но тот же самый код, запущенный на нескольких других серверах, работает нормально. –

ответ

4

Кажется, что библиотека генерации QR-кода, используемая TCPDF, использует слегка «ленивый» способ создания QR-кода. Он случайным образом выбирает из любого из 8 шаблонов «маски», чтобы убедиться, что он делает код лучше. Если он соответствует определенным критериям, он использует случайно выбранную маску. Это приводит к разным QR-кодам каждый раз.

Очевидно, Google использует лучший алгоритм для выбора маски. Вероятно, проверяет все маски и выбирает лучший. Это приведет к предсказуемому результату вместо случайно выбранного.

Я собираюсь вызвать API диаграммы Google для извлечения PNG, а затем поместить его в свой PDF вместо использования встроенного QR-генератора.

+0

Я не уверен в TcPDF, однако вы * должны * иметь возможность изменить это поведение. Лучшая практика внутри генератора состоит в том, чтобы сгенерировать все восемь QR-кодов и решить, какой из них лучше, на основе окончательной оценки штрафа (определенной в стандарте ISO). Если это невозможно с помощью TcPDF, вы можете использовать PHP QR Code (http://phpqrcode.sourceforge.net/) и использовать привязку для использования с TcPDF. – Bell

+0

На всякий случай вы не хотите быть зависимыми от желания и прихотей Google. – Bell

 Смежные вопросы

  • Нет связанных вопросов^_^