portray icon indicating copy to clipboard operation
portray copied to clipboard

Generate beautiful image from your source code

Portray

Generate beautiful image from your source code :night_with_stars:


This project is in alpha stage!


Dependency

You need to have wkhtmltopdf installed on your system to use this package.

Download it from here https://wkhtmltopdf.org/downloads.html#stable or

$ apt install wkhtmltopdf #debian #ubuntu #mint
$ pacman -S wkhtmltopdf #archlinux
$ dnf install wkhtmltopdf #fedora, centos, opensuse

If you are on windows, download the binary from aforementioned website, install it, and add it to PATH.

Install

$ npm install @darvesh/portray

Usage

import { generate } from "@darvesh/portray";

generate(code)
  .then(buffer => {
    if(buffer instanceof Buffer) 
      return fs.promises.writeFile("./image.jpeg", buffer);
  })
  .then(() => console.log("Image saved"))
  .catch(console.error)

import { generate } from "@darvesh/portray";
import { Readable } from "stream";

const options = {
  borderColor: "#90FE13",
  fontSize: 18,
  format: "png",
  theme: "nord",
  stream: true,
  windowControl: 1
}

generate(code, options)
  .then(stream => {
    if(stream instanceof Readable){
      const image = fs.createWriteStream("./image.png");
      stream.pipe(image); 
    }
  })
  .catch(console.error)

Output



Options

fontSize?: number;

Default: 25 (in px)

fontPath?: string;

Default: FiraCode Regular
Supported Font Format: ttf, woff, and woff2
Condition: Provide absolute path of font file. Use path.resolve(__dirname, "/path/to/font")

stream?: true

Default: false
true to return Stream.Readable instead of Buffer

borderColor?: string

Default: "#ABB8C3"
Example: "yellow", "#000000"

borderSize?: number

Default: 25 (in px)

language?: string

Example: "javascript", "rust"

theme?: ThemesType

Default: "dracula"
Refer: ThemesType

windowControl?: 0 | 1 | 2 | 3

Default: 1
0 if you don't want windowControl

1. 1 2. 2 3. 3


Credits

Thanks to Muthu, Thomas and Ceda