Skip to content

darvesh/portray

Folders and files

NameName
Last commit message
Last commit date
Nov 2, 2020
Nov 2, 2020
Nov 2, 2020
Oct 18, 2020
Nov 2, 2020
Nov 2, 2020
Nov 4, 2020
Jul 4, 2021
Nov 3, 2020
Nov 2, 2020

Repository files navigation

Portray

Generate beautiful image from your source code 🌃


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