节点帮助

uuid NPM(开发人员如何工作)

介绍

UUID(通用唯一标识符)包是一个流行的NPM(Node包管理器)库,用于在JavaScript应用程序中生成通用唯一标识符(UUIDs)。 UUID 在创建数据库中的唯一键、会话标识符等方面非常有用。 在本文稍后部分,我们还将研究IronPDF,这是来自Iron Software的一个PDF生成Node.js软件包。 这两个库都可以用来生成数据库的唯一ID,并且生成的UUID可以以PDF格式存储用于归档目的。

主要功能

  1. RFC4122 合规性:UUID 包支持创建符合 RFC4122 的 UUID,确保其在全球范围内唯一且标准化。

  2. 多种UUID版本:支持多种UUID版本,包括:

    • v1:基于时间戳的UUID。

    • v3:使用MD5哈希的基于命名空间的UUID。

    • v4:随机生成的UUID。

    • v5:基于SHA-1哈希的命名空间UUID。

    • v6:基于时间戳的UUID,字段重排序以提高排序性能1
  3. 跨平台支持:该软件包支持不同的环境,包括Node.js、React Native和现代网页浏览器。

  4. 零依赖:它的占用空间小且没有依赖项,使其轻量且易于集成到项目中。

  5. 加密强度:生成的UUID具有加密强度,确保高度安全。

安装

要安装 uuid 包,请使用以下命令行:

npm install uuid
or
yarn add uuid
npm install uuid
or
yarn add uuid
SHELL

基本用法

以下是使用 uuid 包生成 UUID 字符串的方法:

// Import syntax for uuid library
import { v4 as uuidv4 } from 'uuid';
// Generate a random UUID v4
const myUUID = uuidv4();
console.log(myUUID); // Example valid uuid: '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'
js
JAVASCRIPT

或者,使用CommonJS语法:

const { v4: uuidv4 } = require('uuid');
// Generate a random UUID (version 4)
const myUUID = uuidv4();
console.log(myUUID); // Example uuid string output: '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed'
js
JAVASCRIPT

高级功能

  1. 基于命名空间的UUID:在项目开头导入uuid后,可以使用版本3或版本5根据命名空间和名称创建UUID:
import { v5 as uuidv5 } from 'uuid';
// Define a namespace UUID
const MY_NAMESPACE = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';
// Generate UUID based on the namespace and a name
const myUUID = uuidv5('my-unique-name', MY_NAMESPACE);
console.log(myUUID); // Example output: 'e4eaaaf2-d142-11e1-b3e4-080027620cdd'
js
JAVASCRIPT
  1. 验证和解析:UUID 包还提供了验证和解析 UUID 的功能:
import { validate as uuidValidate, parse as uuidParse } from 'uuid';
// Validate a UUID
const isValid = uuidValidate('9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d');
console.log(isValid); // true
// Convert UUID string to an array of bytes
const bytes = uuidParse('9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d');
console.log(bytes); // Uint8Array(16) [ 155, 29, 235, 77, 59, 125, 75, 173, 155, 221, 43, 13, 123, 61, 203, 109 ]
js
JAVASCRIPT

IronPDF 简介

uuid NPM(它对开发者的作用):图 1 - IronPDF

IronPDF 是一个流行的PDF生成库,用于生成、编辑和转换PDF文档。 IronPDF NPM 软件包专为 Node.js 应用程序设计。 以下是 IronPDF NPM 软件包的一些主要功能和详细信息:

主要功能

HTML 转换为 PDF

将 HTML 内容轻松转换为 PDF 文档。 此功能特别适用于从网页内容生成动态PDF。

URL 转换为 PDF

直接从 URL 生成 PDF,允许您捕获网页内容并以编程方式将其保存为 PDF 文件。

PDF 操作

轻松合并、拆分和操作现有的PDF文档。 IronPdf 提供附加页面、分割文档等功能。

PDF 安全

通过设置密码或应用数字签名来保护您的PDF文档。 IronPDF 提供选项以保护您的敏感文档免受未经授权的访问。

高质量输出

生成高质量的PDF文档,精确渲染文本、图像和格式。 IronPDF 确保您生成的 PDF 保持与原始内容的一致性。

跨平台兼容性

IronPDF兼容多个平台,包括Windows、Linux和macOS,使其适用于广泛的开发环境。

简单集成

使用其npm软件包轻松将IronPDF集成到您的Node.js应用程序中。 API 文档详实,使将 PDF 生成功能集成到您的项目中变得简单明了。

安装

要安装 IronPDF NPM 软件包,请使用以下命令:

yarn add @ironsoftware/ironpdf @ironsoftware/ironpdf-engine-windows-x64
yarn add @ironsoftware/ironpdf @ironsoftware/ironpdf-engine-windows-x64
SHELL

使用IronPDF生成PDF文档并使用UUID NPM包

UUID 可以在应用程序的许多地方使用。 它是应用程序中一个非常基础的部分。 UUID 可以用作加密数据的密钥,并且这些密钥可以存储在 PDF 文档中用于存档目的。 下面,我们将看到一个示例,展示如何使用IronPDF生成不同版本的UUID并将其记录在PDF文档中。

安装依赖项:首先,使用以下命令创建一个新的 Next.js 项目(如果您尚未创建)。请参阅此处

npx create-next-app@latest uuid-pdf --use-npm --example "https://github.com/vercel/next-learn/tree/main/basics/learn-starter"
npx create-next-app@latest uuid-pdf --use-npm --example "https://github.com/vercel/next-learn/tree/main/basics/learn-starter"
SHELL

接下来,导航到你的项目目录:

cd uuid-pdf
cd uuid-pdf
SHELL

安装所需的软件包:

yarn add @ironsoftware/ironpdf @ironsoftware/ironpdf-engine-windows-x64
yarn add uuid
yarn add @ironsoftware/ironpdf @ironsoftware/ironpdf-engine-windows-x64
yarn add uuid
SHELL

创建 PDF

现在,让我们创建一个使用 IronPDF 生成 PDF 的简单示例。

PDF生成API:第一步是创建一个后端API来生成PDF文档。 由于IronPDF只在服务器端运行,我们需要创建一个API,以便在用户想生成PDF时调用。 在 pages/api/pdf.js 路径下创建一个文件,并添加以下内容。

IronPDF需要一个许可证密钥,您可以从许可证页面获取,并将其放入以下代码中。

// pages/api/pdf.js
import {IronPdfGlobalConfig, PdfDocument} from "@ironsoftware/ironpdf";
// Apply your IronPDF license key
IronPdfGlobalConfig.getConfig().licenseKey = "Your license key";
  export default async function handler(req, res) {
    try {
      const v4t = req.query.v4;
      const v5t = req.query.v5;
      const c = req.query.c;
      let content = "<h1>Demo UUID and Generate PDF Using IronPDF</h1>"
      content+="<p>V4 UUID:"+v4t+"</p>";
      content+="<p>V5 UUID:"+v5t+"</p>";
      content+="<p>Is UUID:"+c+", Valid:"+uuidValidate(c).toString()+"</p>";
      const pdf = await PdfDocument.fromHtml(content);
      const data = await pdf.saveAsBuffer();
      console.error("data PDF:", data);
      res.setHeader("Content-Type", "application/pdf");
      res.setHeader(
        "Content-Disposition",
        "attachment; filename=awesomeIron.pdf",
      );
      res.send(data);
    } catch (error) {
      console.error("Error generating PDF:", error);
      res.status(500).end();
    }
  }
js
JAVASCRIPT

现在修改index.js代码如下,以使用UUID和IronPDF。

import Head from "next/head";
import styles from "../styles/Home.module.css";
import React, { useState, useEffect } from "react";
import { v4 as uuidv4 } from 'uuid';
import { v5 as uuidv5 } from 'uuid';
import { validate as uuidValidate, parse as uuidParse } from 'uuid';
export default function Home() {
  const [text, setText] = useState("");
  const myUUID = uuidv4();
  const MY_NAMESPACE = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';
  const myV5UUID = uuidv5('IronPDF', MY_NAMESPACE);
  const generatePdf = async () => {
    try {
      const response = await fetch("/api/pdf-uuid?v4="+myUUID+"&v5="+myV5UUID+"&c="+text);
      const blob = await response.blob();
      const url = window.URL.createObjectURL(new Blob([blob]));
      const link = document.createElement("a");
      link.href = url;
      link.setAttribute("download", "awesomeIron.pdf");
      document.body.appendChild(link);
      link.click();
      link.parentNode.removeChild(link);
    } catch (error) {
      console.error("Error generating PDF:", error);
    }
  };
  const handleChange = (event) => {
    setText(event.target.value);
  };
  return (
    <div className={styles.container}>
     <Head>
        <title>Generate PDF Using IronPDF</title>
        <link rel="icon" href="/favicon.ico" />
      </Head>
      <main>
        <h1>Demo UUID NPM and Generate PDF Using IronPDF</h1>
        <p>
          V4 UUID: <>{myUUID}</>
        </p>
        <p>
          V5 UUID: <>{myV5UUID}</>
        </p>
        <p>
          <span>Enter UUID to Verify:</span>{" "}
        </p>
        <p>
        Is UUID {text} Valid: <>{uuidValidate(text).toString()}</>
        </p>
        <button style={{ margin: 20, padding: 5 }} onClick={generatePdf}>
          Generate PDF 
        </button>
      </main>
      <style jsx>{`
        main {
          padding: 5rem 0;
          flex: 1;
          display: flex;
          flex-direction: column;
          justify-content: center;
          align-items: center;
        }
        footer {
          width: 100%;
          height: 100px;
          border-top: 1px solid #eaeaea;
          display: flex;
          justify-content: center;
          align-items: center;
        }
        footer img {
          margin-left: 0.5rem;
        }
        footer a {
          display: flex;
          justify-content: center;
          align-items: center;
          text-decoration: none;
          color: inherit;
        }
        code {
          background: #fafafa;
          border-radius: 5px;
          padding: 0.75rem;
          font-size: 1.1rem;
          font-family:
            Menlo,
            Monaco,
            Lucida Console,
            Liberation Mono,
            DejaVu Sans Mono,
            Bitstream Vera Sans Mono,
            Courier New,
            monospace;
        }
      `}</style>
      <style jsx global>{`
        html,
        body {
          padding: 0;
          margin: 0;
          font-family:
            -apple-system,
            BlinkMacSystemFont,
            Segoe UI,
            Roboto,
            Oxygen,
            Ubuntu,
            Cantarell,
            Fira Sans,
            Droid Sans,
            Helvetica Neue,
            sans-serif;
        }
        * {
          box-sizing: border-box;
        }
      `}</style>
    </div>
  );
}
js
JAVASCRIPT

代码解释

  1. 导入和初始设置:

    • next/head 的 Head:用于修改 HTML 文档的

      以设置标题和 favicon。

    • 从"../styles/Home.module.css"导入样式:为组件导入本地CSS样式。

    • React、useState、useEffect:用于状态管理和副作用的基本 React 钩子。
    • uuidv4, uuidv5, uuidValidate, uuidParse:从UUID包中导入的用于UUID生成、验证和解析的函数。
  2. 组件功能:

    • 状态管理:

      • useState:管理用户输入UUID的文本输入字段的状态。

      • 文本:状态变量保存输入字段的当前值。
    • UUID 生成:

      • uuidv4():生成一个随机的UUID版本4。

      • MY_NAMESPACE 和 uuidv5('IronPDF', MY_NAMESPACE):基于给定的命名空间 (MY_NAMESPACE) 生成一个版本 5 的 UUID。
    • PDF 生成(generatePdf 函数):

      • 使用 fetch 调用带有查询参数 (v4, v5, c) 的 API 端点 (/api/pdf-uuid)。

      • 将响应下载为 blob,为其创建 URL,并生成下载链接( 元素)。

      • 将链接附加到 DOM,点击它以启动下载,然后将其从 DOM 中移除。
    • 事件处理(handleChange 函数):

      • 当用户在输入字段中键入时更新文本状态。
  3. 渲染方法:

    • 返回组件 UI 结构的 JSX:

      • 包括一个标题(Head)、一个主要部分(

        ),以及显示UUID和用于用户交互的输入字段的各个段落。

      • generatePdf 函数绑定到按钮点击事件以触发 PDF 生成。
      • CSS 样式在 Next.js 的 styled-jsx 中被定义为局部样式(
        立即获取您的免费30天试用密钥
        谢谢。
        如果您想与我们的许可团队交流:

        有问题吗?联系我们的开发团队。
        无需信用卡或创建账户