Socket
Socket
Sign inDemoInstall

@pdftron/canvas-to-pdf

Package Overview
Dependencies
0
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @pdftron/canvas-to-pdf

CanvasToPDF can create vector quality PDF images using the canvas API.


Version published
Weekly downloads
2
increased by100%
Maintainers
1
Install size
1.45 MB
Created
Weekly downloads
 

Readme

Source

CanvasToPDF

CanvasToPDF can create vector quality PDF images using the canvas API.

How it works

Internally, CanvasToPDF uses modified versions of canvas2pdf and PDFKit to call on actual PDF drawing methods. CanvasToPDF has several notable improvements from canvas2pdf in that it has no issues calling fill and stroke consecutively and that reading canvas properties (such as lineWidth) do not lead to errors. Thus, you can create vectorized images such as the one below.

Screen Shot 2022-08-18 at 10 23 15 AM

Dependencies

CanvasToPDF has one optional dependency: FileSaver. The CanvasToPDF api returns a blob containing the annotations, but since it is difficult to check that the blob has the expected images drawn you can use FileSaver to download an actual PDF.

Usage

To use the CanvasToPDF package, you will have to have a webpack environment prepared.

CanvasToPDF currently only supports client-side usage. You can use CanvasToPDF by creating an index.js file with code similar to the one below.

Sample Code for Using CanvasToPDF

import canvasToPDF from "@pdftron/canvas-to-pdf";
import saveAs from "./FileSaver";

const draw = (ctx) => {
  // canvas methods
};

canvasToPDF(draw).then((res) => {
  saveAs(res, "example.pdf", true);
});

Sample Code for Drawing Vector Appearances

const draw = (ctx) => {
  for (let i = 0; i < 12; i++) {
    for (let j = 0; j < 12; j++) {
      ctx.strokeStyle = `rgb(
    0,
    ${Math.floor(255 - 42.5 * i)},
    ${Math.floor(255 - 42.5 * j)})`;
      ctx.beginPath();
      ctx.arc(25 + j * 40, 25 + i * 40, 15, 0, Math.PI * 2, true);
      ctx.stroke();
    }
  }
};

The above code will draw multiple circles with gradient borders:

case2

Sample Webpack Configuration

const webpack = require("webpack");
const path = require("path");
module.exports = {
  entry: "./index.js",
  output: {
    path: path.resolve(__dirname, "dist"),
    filename: "bundle.js",
  },
};

This webpack configuration will expect an index.js file where CanvasToPDF is presumably being used and produce a bundle.js file under a dist folder. You can then directly load bundle.js in an index.html file just like any other script.

<script src="./dist/bundle.js"></script>

Notes

  • Some canvas 2d context methods are not implemented yet
  • Drawing line widths of less than 1 is not supported
  • Currently only supports 3 default fonts: Helvetica, Courier, and Times-Roman

FAQs

Last updated on 25 Aug 2022

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc