Node.js 如何生成vCard(VCF)联系人文件
假设你想要一种简单且受支持的方式来导出联系人。也许这是因为你正在创建一个CRM应用程序,构建一个电子邮件客户端,或者其他任何需要支持和导出联系人项的东西。有一个简单的解决方案:VCF文件。可以创建、编辑和导出联系人作为vCard(或“VCF”)文件供其他设备使用。VCF文件对于在不同系统之间传输联系人非常有用,并为表示联系人和各种潜在属性提供一致的文件格式。
在本文中,我们将解释如何在Node.js中生成自己的VCF联系人文件。
项目设置和模块安装:
步骤1: 使用以下命令创建一个名为“project”的Node.js应用程序:
mkdir Project && cd Project
npm init -y
步骤2: 使用以下命令安装依赖模块:
npm i vcards-js axios
步骤3: 使用以下命令创建 vcard.js 文件:
touch vcard.js
项目结构: 这是项目的初始目录:
步骤4: 创建一个单个vCard,设置一些基本属性,并将其保存到文件 vcard.js :
vcard.js
let vCardsJS = require('vcards-js');
// This is your vCard instance, that
// represents a single contact file
let vCard = vCardsJS();
// Set contact properties
vCard.firstName = "James";
vCard.middleName = "Daniel";
vCard.lastName = "Smith";
vCard.organization = "GeeksforGeeks";
vCard.title = "Technical Writer";
vCard.email = "james@example.com";
vCard.cellPhone = "+1 (123) 456-789";
// Save contact to VCF file
vCard.saveToFile(`james.vcf`);
步骤5: 要在vCard中添加自定义个人资料照片,您需要将照片转换为Base64格式,然后使用Base64数据格式进行设置。此示例从URL中获取占位图像,将获取的图像转换为Base64格式,然后将个人资料照片设置为该图像。Base64是一种非常强大的格式,因此很可能将本地图像或来自文件上传的图像转换为Base64,并从那里设置vCard个人资料照片。以下是您可以在浏览器上将上传的图像转换为Base64的方法。
要设置自定义生日,只需将生日属性设置为表示联系人生日的普通JavaScript Date对象。
使用下面的文件名创建以下文件: vcard.js :
vcard.js
let vCardsJS = require('vcards-js');
let axios = require('axios');
(async () => {
// This is your vCard instance, which
// represents a single contact file
let vCard = vCardsJS();
// Set contact properties
vCard.firstName = "James";
vCard.lastName = "Smith";
// Add a profile photo by fetching from a URL
let image = await axios.get("https://via.placeholder.com/300",
{responseType: 'arraybuffer'});
// Convert image to base 64
let imageBase64 = Buffer.from(image.data).toString('base64');
// Set vCard photo to the base 64 value of the image
vCard.photo.embedFromString(imageBase64, 'image/jpeg');
// Set birthday using a JavaScript date object
vCard.birthday = new Date("July 17, 2004");
// Save contact to VCF file
vCard.saveToFile(`james-with-photo-and-birthday.vcf`);
})();
运行应用的步骤:
要运行此程序,请运行以下命令:
node vcard.js
输出: 我们程序的输出和结果是在项目目录中创建了一个新的vCard,其内容如下:
BEGIN:VCARD
VERSION:3.0
FN;CHARSET=UTF-8:詹姆斯·史密斯
N;CHARSET=UTF-8:史密斯;詹姆斯;;;
BDAY:20040717
PHOTO;ENCODING=b;TYPE=image/jpeg:iVBORw0KGgoAAAANSUhEUgAAASwAAAEsBAMAAACLU5NGAAAAG1BMVEXMzMyWlpacnJyqqqrFxcWxsbGjo6O3t7e+vr6He3KoAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAD90lEQVR4nO3cwW+bSBQH4AcGw5HnJDhHaN3dHO1su9ojNGnPtrUb7dFuIiVHnEo5263Uv3vfGwab1myVA5DV6vcpgeD35HmeGYbJxUQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zOb3N5BRexlu9/Jo+NCQFl/HbWrRK7s6Amcdy3jCfaftyOT/OmsnLxSFqkzu04Ns1Z+RxPOMtUc63fH6U5HP8O5/uo1Vyh9IJhTylwSjz0pV0y4Tex0dJ7iij3ck+WiV3J9RPvVhRLgO5O5V+KOSl7MesnXSRH++jNrlDAWurEW0i6ZOz8jI9mlwaDXkftckd8nXEdgnNVjI2sf6Q+VvLSMiMHJnupHC0j9rkrmlL87Lhs7JK86oM1fowVFq0jdrkjn2QKbMuTEvD8aGsfCQ9th9PbzHeR21yt1KWkUq3et+Tq4tDHpnXfZ67+7Zdltu1itrkbrEuRWVLWdmwHbl0shlXSQ7LLVtFbXLXZUmLphHOHK3IsWVtTg6Lk6PFV1Gb3G1Z9I1Xjb015NpSHq7jfntL7reoaW7JhD+pJQ2537llVuyGO1Em17iWJMt7f3ei/zeZcdGlKLDr1saW5XPV9F9bM2pV1CZ3yDxDZFx0HZcF0z+s8rpwVcuWPo5k1KqoTe7QwD58mp6Js/PUTn4tVEatx2ei3lAzu4M4t3uErQl5PN3YOb84NR+gitrkDnl8J51QNO23hjLH7SqQxxnp0trbfotmo9t0RE27U9k9hFw2PuBfLnVD0d/u9KMs8hNq2svrxFqXJXprZtmg9riXp5v0jTRI4afyn5lv1X8+gRaQ22XA/zT6sxatkgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD65tjf/5gXLYtHb/8l8kNZkVw5zEwjIjei8ru7rtJ7/YqcO3ISorTFsiLvt+eXZY7xlp5sWd6b7KscrpeZ80DBus2y6D1dviY3C+QP/9WUnGWkp8GrhZa1fE3DQiK1ssYrurdlDeblwZ86TzTctFuWf/dxPihy+kw31+/IuTOnm2v98I6EwoTe1cuKLsLEluVm5cFLHHf7pc2JKIPoZl4STpfFHzSRfnEyc5pQrmVJiO7l13yRHpdlPQ0LW5ZTHSInWN23WZZMedMJycUq0aa1FT1F1dyK6MugoHpvuY903Fv0a9Jqb+n7apesHlY0KSvRU6233CV9V5Z/RsdzixbzlsvSuUXL4nFOT9mVtq2nw9yiYPx9WebCHGt3IrW7yOnby51IuyzPKEgv9M31dLgTKUgayioH+oqrdavlsp5hWPTb3jM9vnQBjZyLl64AAP43/gHVSaMe2vmdiAAAAABJRU5ErkJggg==
REV:2022-02-27T19:04:38.635Z
END:VCARD
这个vCard文件存储为 james-with-photo-and-birthday.vcf 字样指定的文件中。
结论: vCards和VCF文件可以成为任何基于联系人的应用程序的重要组成部分。使用vcards-js,在Node中生成和保存vCard/VCF文件非常简单。