2.4.1 • Published 3 days ago

@liquid-js/qr-code-styling v2.4.1

Weekly downloads
-
License
MIT
Repository
github
Last release
3 days ago

QR Code Styling

Version

JavaScript library for generating QR codes with a logo and styling.

Try it here https://qr-code-styling.com

If you have issues / suggestions / notes / questions, please open an issue or contact me. Let's create a cool library together.

Examples

Installation

npm install @liquid-js/qr-code-styling

API Documentation

https://liquid-js.github.io/qr-code-styling/

Usage

Browser

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>QR Code Styling</title>
  </head>
  <body>
    <div id="canvas"></div>
    <button type="button" id="dl">Download</button>
    <script type="module">
      import { QRCodeStyling, browserUtils } from "https://unpkg.com/@liquid-js/qr-code-styling/lib/qr-code-styling.js";

      const qrCode = new QRCodeStyling({
        data: "https://www.facebook.com/",
        image: "https://upload.wikimedia.org/wikipedia/commons/5/51/Facebook_f_logo_%282019%29.svg",
        dotsOptions: {
          color: "#4267b2",
          type: "rounded",
          size: 10
        },
        backgroundOptions: {
          color: "#e9ebee",
          margin: 1
        },
        imageOptions: {
          crossOrigin: "anonymous",
          margin: 1,
          imageSize: 0.5
        }
      });

      qrCode.append(document.getElementById("canvas"));

      document.getElementById("dl").addEventListener("click", () => {
        browserUtils.download(qrCode, { extension: "png" }, { width: 1200, height: 1200 });
      });
    </script>
  </body>
</html>

Node

import { QRCodeStyling } from "@liquid-js/qr-code-styling";
import { writeFile } from "fs/promises";
import PDFDocument from "pdfkit";
import SVGtoPDF from "svg-to-pdfkit";

const qrCode = new QRCodeStyling({
  data: "https://www.facebook.com/",
  image: "https://upload.wikimedia.org/wikipedia/commons/5/51/Facebook_f_logo_%282019%29.svg",
  dotsOptions: {
    color: "#4267b2",
    type: "rounded",
    size: 10
  },
  backgroundOptions: {
    color: "#e9ebee",
    margin: 1
  },
  imageOptions: {
    crossOrigin: "anonymous",
    margin: 1,
    imageSize: 0.5
  }
});

const svgCode = await qrCode.serialize();

const width = parseFloat(qrCode._svg.getAttribute("width"));
const height = parseFloat(qrCode._svg.getAttribute("height"));
const buffers = [];
const doc = new PDFDocument({ size: [width, height] });
doc.on("data", (v) => buffers.push(v));
const buffer = await new Promise((resolve) => {
  doc.on("end", () => {
    resolve(Buffer.concat(buffers));
  });
  SVGtoPDF(doc, svgCode, 0, 0, {
    width,
    height,
    assumePt: true
  });
  doc.end();
});
await writeFile("qr.pdf", buffer);

Kanji support

For Kanji mode to work, import stringToBytesFuncs from @liquid-js/qr-code-styling/kanji and inclue it with config.

import { stringToBytesFuncs } from "@liquid-js/qr-code-styling/kanji";

const qrCode = new QRCodeStyling({
  data: "漢字",
  qrOptions: {
    mode: Mode.kanji
  },
  stringToBytesFuncs
  // ...other options
});

License

MIT License

2.4.1

3 days ago

2.4.0

4 days ago

2.3.0

5 days ago

2.2.1

8 days ago

2.2.0

8 days ago

2.2.3

7 days ago

2.2.2

7 days ago

2.1.2

9 days ago

2.1.1

9 days ago

2.1.0

9 days ago

2.0.5

10 days ago

2.0.3

11 days ago

2.0.4

11 days ago

2.0.2

23 days ago

2.0.0-rc.0

30 days ago

2.0.1

30 days ago

2.0.0

30 days ago

1.10.5

1 month ago

1.10.4

1 month ago

1.10.3

1 month ago

1.10.2

1 month ago

1.10.7

1 month ago

1.10.6

1 month ago

1.10.1

1 month ago

1.10.0

1 month ago

1.9.1

1 month ago

1.9.0

1 month ago

1.8.0

1 month ago

1.7.1

2 months ago

1.6.2

9 months ago

1.7.0

8 months ago

1.6.1

11 months ago

1.6.0

11 months ago

1.6.0-rc.4

2 years ago

1.6.0-rc.3

2 years ago

1.6.0-rc.2

2 years ago

1.6.0-rc.1

2 years ago