2010-08-26 4 views
5

CakePHP 1.3에 TCPDF가 설치되어 있으며 QR 코드의 PDF를 생성하는 데 사용 중입니다. A9 크기의 페이지, 2 개의 문자열 및 1 개의 QR 코드를 만드는 매우 간단한 함수입니다. QR 코드는 간단한 URL을위한 것입니다 (예 : 'example.com/12345').TCPDF QR 코드가 항상 다른 경우

브라우저에서 페이지를로드 할 수 있으며 (Safari는 PDF 리더가 내장되어 있습니다.) 페이지를 새로 고침 할 때마다 QR 코드가 약간 변경됩니다. 모듈 치수는 동일하지만 데이터 요소가 크게 변경됩니다. "L"데이터 중복 설정을 사용하고 있습니다. 문자열은 각 호출이 동일하지만 QR이 변경됩니다. 몇 가지 재 장전을보고 난 후에는 3 ~ 4 개의 변형 만 반복됩니다.

이제 여기에 정말 중요한 부분이 있습니다. 올바르게 스캔됩니다. 각 QR의 순열은 QR 리더 (iPhone4의 i-Nigma)에서 정확히 동일한 URL 결과를 가져옵니다.

아이디어가 있으십니까? 내가 멍청하고 명백한 것을하고 있거나 놓치고 있는가? 미리 감사드립니다!

+0

업데이트 : PHP 5.2.5를 실행하는 Win 2K3 시스템에서 호스팅되고 있습니다. 나는 그것과 관련이 있을지도 모른다고 생각하기 시작했습니다. 나는 TCPDF 지원 포럼에서 유사한 것을 언급했다. 그들은 그들의 서버에서 실행되는 데모 스크립트를 가지고 있었고 똑같은 변화하는 QR 패턴을 제공했습니다. 그러나 다른 여러 서버에서 실행되는 동일한 코드가 정상적으로 실행됩니다. –

답변

4

TCPDF에서 사용하는 QR 코드 생성 라이브러리가 QR 코드를 생성하는 방법이 약간 '게으른'것으로 보입니다. 임의로 8 개의 '마스크'패턴 중 하나를 선택하여 코드가 더 나은지 확인합니다. 특정 기준을 충족하면 임의로 선택한 마스크를 사용합니다. 그 결과 매번 다른 QR 코드가 나타날 수 있습니다.

분명히 Google은 더 나은 알고리즘을 사용하여 마스크를 선택합니다. 아마 모든 마스크를 검사하고 최상의 마스크를 선택합니다. 이것은 임의로 선택된 결과 대신 예측 가능한 결과를 가져옵니다.

Google Chart API를 호출하여 PNG를 검색 한 다음 내장 QR 생성기를 사용하는 대신 내 PDF에 배치 할 것입니다.

+0

TcPDF에 대한 확신이 없지만이 동작을 변경할 수 있어야합니다. 발전기 내부의 모범 사례는 최종 페널티 점수 (ISO 표준에 정의 됨)에 따라 8 개의 QR 코드를 모두 생성하여 가장 적합한 코드를 결정하는 것입니다. 그것이 TcPDF로는 가능하지 않다면 PHP QR Code (http://phpqrcode.sourceforge.net/)를 사용하고 거기에있는 바인딩을 사용하여 TcPDF에서 사용할 수 있습니다. – Bell

+0

당신이 구글의 소망과 변덕에 의존하고 싶지 않을 경우를 대비하여. – Bell