Creare file VCF in Javascript
In questo articolo vi propongo una funzione per creare un file VCF in Javascript.
Qualche nota:
- i dati li ho messi tutti cablati nel codice, ma potete facilmente sostituirli con dati presi da pagina o da API (cosa che ho fatto in Angular)
- l'immagine l'ho presa online, la metto dentro un tag immagine con crossorigin (sennò dava errore)
- la stringa vcard non deve avere spazi a sinistra, sennò il VCF non esce valido
Detto ciò ecco un esempio:
<!DOCTYPE html>
<html lang="en">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="UTF-8">
<title>TEST</title>
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
<style></style>
<script>
function creaVcf() {
const imgProfile = document.getElementById('img');
const canvas = document.createElement("canvas");
canvas.width = imgProfile.width;
canvas.height = imgProfile.height;
const ctx = canvas.getContext("2d");
ctx.drawImage(imgProfile, 0, 0);
const dataURL = canvas.toDataURL("image/jpeg");
const blobImg = dataURL.replace(/^data:image\/?[A-z]*;base64,/, '');
const makeVCardVersion = `VERSION:3.0`;
const makeVCardInfo = `N:MIO_NOME`;
const makeVCardName = `FN:MIO_COGNOME`;
const makeVCardOrg = `ORG:MIA_AZIENDA`;
const makeVCardTitle = `TITLE:MIO_RUOLO`;
const makeVCardPhoto = `PHOTO;TYPE=JPEG;ENCODING=b:${blobImg}`;
const makeVCardTel = `TEL;TYPE=WORK,VOICE:MIO_TELEFONO`;
const makeVCardAdr = `ADR;TYPE=WORK,PREF:;;MIO_INDIRIZZO`;
const makeVCardEmail = `EMAIL:MIA_EMAIL`;
const makeVCardTimeStamp = `REV:${new Date().toISOString()}`;
let vcard = `BEGIN:VCARD
${makeVCardVersion}
${makeVCardInfo}
${makeVCardName}
${makeVCardOrg}
${makeVCardTitle}
${makeVCardPhoto}
${makeVCardTel}
${makeVCardAdr}
${makeVCardEmail}
${makeVCardTimeStamp}
END:VCARD`;
const file = new Blob([vcard], {type: 'text/vcard'});
const a = document.createElement('a');
a.href = URL.createObjectURL(file);
a.download = 'file.vcf';
a.click();
URL.revokeObjectURL(a.href);
}
</script>
</head>
<body>
<img id="img" src="https://picsum.photos/200" alt="" crossOrigin="anonymous">
<br>
<button type="button" onclick="creaVcf()">CREA</button>
</body>
</html>
PS: grazie al forum.html.it per le dritte!
Enjoy!
javascript vcf vcard
Commentami!