📜  如何在 Node.js 中生成 vCard (VCF) 联系人文件?

📅  最后修改于: 2022-05-13 01:56:40.514000             🧑  作者: Mango

如何在 Node.js 中生成 vCard (VCF) 联系人文件?

假设您想要一种简单且支持良好的联系人导出方式。这可能是因为您正在创建 CRM 应用程序、构建电子邮件客户端或其他任何需要支持和导出联系人项目的东西。有一个简单的解决方案:VCF 文件。可以创建、编辑联系人并将其导出为 vCard(或“VCF”)文件,以便在其他设备上使用。 VCF 文件可用于跨不同系统传输联系人,并提供一致的文件格式来表示联系人和大量潜在属性。

在本文中,我们将解释如何在 Node.js 中生成您自己的 VCF 联系人文件。

项目设置和模块安装:

第 1 步:创建一个 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`);


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`);
})();


第 5 步:要将自定义个人资料照片添加到您的 vCard,您需要将个人资料照片转换为 Base64,然后使用 Base64 数据格式进行设置。此示例从 URL 获取占位符图像,将获取的图像转换为 Base64,然后将个人资料照片设置为 vCard 中的该图像。 Base64 是一种非常强大的格式,因此很可能将本地图像或图像从文件上传转换为 Base64,然后从那里设置 vCard 个人资料照片。这是在浏览器上将上传的图像转换为 Base64 的方法。

要设置自定义生日,只需将birthday 属性设置为表示联系人生日的纯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,内容如下:

此 vCard 存储为文件 james-with-photo-and-birthday.vcf,如代码中所指定。

结论: vCard 和 VCF 文件可以集成到您可能构建的任何基于联系人的应用程序中。使用 vcards-js,在 Node.js 中生成和保存 vCard/VCF 文件非常简单。