Sample code for 30+ languages & platforms
Perl Requires Chilkat v11.7.0+

Create a vCard (Contact) QR Code

See more QR Code Examples

Demonstrates a QR code that adds a contact to a phone when scanned. The text is a vCard, the standard format for contact details: lines between BEGIN:VCARD and END:VCARD, each ending with CRLF. A vCard is fairly long, so the symbol is larger than one holding a web address. Leave out the fields that are not needed to keep it small.

Chilkat Perl Downloads

Perl
use chilkat();

$success = 0;

#  This example requires the Chilkat API to have been previously unlocked.
#  See Global Unlock Sample for sample code.

#  The second argument of AppendLine is cktrue to end each line with CRLF.
$sbCard = chilkat::CkStringBuilder->new();
$sbCard->AppendLine("BEGIN:VCARD",1);
$sbCard->AppendLine("VERSION:3.0",1);
$sbCard->AppendLine("N:Smith;Alex;;;",1);
$sbCard->AppendLine("FN:Alex Smith",1);
$sbCard->AppendLine("ORG:Example Company",1);
$sbCard->AppendLine("TITLE:Sales Manager",1);
$sbCard->AppendLine("TEL;TYPE=CELL:+1-555-0100",1);
$sbCard->AppendLine('EMAIL:alex.smith@example.com',1);
$sbCard->AppendLine("URL:https://www.example.com",1);
$sbCard->AppendLine("END:VCARD",1);

$json = chilkat::CkJsonObject->new();
$json->UpdateSb("payload.text",$sbCard);
$json->UpdateInt("render.moduleSize",6);
$json->UpdateString("output.path","qa_output/qr_vcard.png");
$json->UpdateBool("output.overwrite",1);
$json->UpdateString("output.return","none");

$fmt = chilkat::CkFormats->new();
$jsonOut = chilkat::CkJsonObject->new();
$success = $fmt->QrCode("generate",$json,$jsonOut);
if ($success == 0) {
    print $fmt->lastErrorText() . "\r\n";
    exit;
}

print "vCard length: " . $sbCard->get_Length() . "\r\n";
print "QR version: " . $jsonOut->IntOf("symbols[0].selectedEncoding.version") . "\r\n";
print "modules: " . $jsonOut->IntOf("symbols[0].dimensions.modulesWide") . " x " . $jsonOut->IntOf("symbols[0].dimensions.modulesHigh") . "\r\n";
print "image: " . $jsonOut->IntOf("outputs[0].width") . " x " . $jsonOut->IntOf("outputs[0].height") . " pixels" . "\r\n";

#  The image written to qa_output/qr_vcard.png:

#  image

#  Sample output:

#  vCard length: 197
#  QR version: 10
#  modules: 57 x 57
#  image: 390 x 390 pixels