vCards JS
This is a fork of https://github.com/enesser/vCards-js made for the web. Removes any local file use cases and more specifically, the dependency on the 'fs' package.
Create vCards to import contacts into Outlook, iOS, Mac OS, and Android devices from your website or application.
Install
npm install vcards-js --save
Usage
Below is a simple example of how to create a basic vCard and how to save it to a file, or view its contents from the console.
Basic vCard
var vCardsJS = require("vcards-js");
var vCard = vCardsJS();
vCard.firstName = "Eric";
vCard.middleName = "J";
vCard.lastName = "Nesser";
vCard.organization = "ACME Corporation";
vCard.photo.attachFromUrl(
"https://avatars2.githubusercontent.com/u/5659221?v=3&s=460",
"JPEG"
);
vCard.workPhone = "312-555-1212";
vCard.birthday = new Date(1985, 0, 1);
vCard.title = "Software Developer";
vCard.url = "https://github.com/enesser";
vCard.note = "Notes on Eric";
vCard.saveToFile("./eric-nesser.vcf");
console.log(vCard.getFormattedString());
On the Web
You can use vCards JS on your website. Below is an example of how to get it working on Express 4.
var express = require("express");
var router = express.Router();
module.exports = function(app) {
app.use("/", router);
};
router.get("/", function(req, res, next) {
var vCardsJS = require("vcards-js");
var vCard = vCardsJS();
vCard.firstName = "Eric";
vCard.middleName = "J";
vCard.lastName = "Nesser";
vCard.organization = "ACME Corporation";
res.set("Content-Type", 'text/vcard; name="enesser.vcf"');
res.set("Content-Disposition", 'inline; filename="enesser.vcf"');
res.send(vCard.getFormattedString());
});
Embedding Images
You can embed images in the photo or logo field instead of linking to them from a URL using base64 encoding.
vCard.photo.embedFromFile("/path/to/file.png");
vCard.logo.embedFromFile("/path/to/file.png");
vCard.photo.embedFromString("iVBORw0KGgoAAAANSUhEUgAAA2...", "image/png");
vCard.logo.embedFromString("iVBORw0KGgoAAAANSUhEUgAAA2...", "image/png");
Date Reference
MDN reference on how to use the Date
object for birthday and anniversary can be found at https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date.
Complete Example
The following shows a vCard with everything filled out.
var vCardJS = require("vcards-js");
var vCard = vCardsJS();
vCard.firstName = "Eric";
vCard.middleName = "J";
vCard.lastName = "Nesser";
vCard.uid = "69531f4a-c34d-4a1e-8922-bd38a9476a53";
vCard.organization = "ACME Corporation";
vCard.photo.attachFromUrl(
"https://avatars2.githubusercontent.com/u/5659221?v=3&s=460",
"JPEG"
);
vCard.photo.attachFromUrl("/path/to/file.jpeg");
vCard.workPhone = "312-555-1212";
vCard.birthday = new Date(1985, 0, 1);
vCard.title = "Software Developer";
vCard.url = "https://github.com/enesser";
vCard.workUrl = "https://acme-corporation/enesser";
vCard.note = "Notes on Eric";
vCard.nickname = "Scarface";
vCard.namePrefix = "Mr.";
vCard.nameSuffix = "JR";
vCard.gender = "M";
vCard.anniversary = new Date(2004, 0, 1);
vCard.role = "Software Development";
vCard.homePhone = "312-555-1313";
vCard.cellPhone = "312-555-1414";
vCard.pagerPhone = "312-555-1515";
vCard.homeFax = "312-555-1616";
vCard.workFax = "312-555-1717";
vCard.email = "e.nesser@emailhost.tld";
vCard.workEmail = "e.nesser@acme-corporation.tld";
vCard.logo.attachFromUrl(
"https://avatars2.githubusercontent.com/u/5659221?v=3&s=460",
"JPEG"
);
vCard.source = "http://mywebpage/myvcard.vcf";
vCard.homeAddress.label = "Home Address";
vCard.homeAddress.street = "123 Main Street";
vCard.homeAddress.city = "Chicago";
vCard.homeAddress.stateProvince = "IL";
vCard.homeAddress.postalCode = "12345";
vCard.homeAddress.countryRegion = "United States of America";
vCard.workAddress.label = "Work Address";
vCard.workAddress.street = "123 Corporate Loop\nSuite 500";
vCard.workAddress.city = "Los Angeles";
vCard.workAddress.stateProvince = "CA";
vCard.workAddress.postalCode = "54321";
vCard.workAddress.countryRegion = "United States of America";
vCard.socialUrls["facebook"] = "https://...";
vCard.socialUrls["linkedIn"] = "https://...";
vCard.socialUrls["twitter"] = "https://...";
vCard.socialUrls["flickr"] = "https://...";
vCard.socialUrls["custom"] = "https://...";
vCard.photo.embedFromFile("photo.jpg");
vCard.logo.embedFromFile("logo.jpg");
vCard.version = "3.0";
vCard.saveToFile("./eric-nesser.vcf");
console.log(vCard.getFormattedString());
Multiple Email, Fax, & Phone Examples
email
, otherEmail
, cellPhone
, pagerPhone
, homePhone
, workPhone
, homeFax
, workFax
, otherPhone
all support multiple entries in an array format.
Examples are provided below:
var vCardsJS = require("vcards-js");
var vCard = vCardsJS();
vCard.email = [
"e.nesser@emailhost.tld",
"e.nesser@emailhost2.tld",
"e.nesser@emailhost3.tld"
];
vCard.cellPhone = ["312-555-1414", "312-555-1415", "312-555-1416"];
Apple AddressBook Extensions
You can mark as a contact as an organization with the following Apple AddressBook extension property:
var vCardsJS = require("vcards-js");
var vCard = vCardsJS();
vCard.isOrganization = true;
React Native
A React Native version exists here at this repository --
https://github.com/idxbroker/vCards-js/tree/react-native
Testing
You can run the vCard unit tests via npm
:
npm test
Contributions
Contributions are always welcome!
Additional thanks to --
Donations
BTC 18N1g2o1b9u2jNPbSpGHhV6x5xs6Qou3EV
License
Copyright (c) 2014-2019 Eric J Nesser MIT