open-index/open-npm huggingface dataset:
npm package: @nutrient-sdk/font-tool
Description: Create dynamic font bundles for Nutrient PDF SDK
Latest version: 0.1.1

# nutrient-font-tool

Generate `fonts.json` metadata for Nutrient PDF SDK font bundles.

📖 **Guide**: [Dynamic Font Loading in Nutrient Web SDK](https://www.nutrient.io/guides/web/forms/fill-form-fields/dynamic-font-loading/)

## Installation

```bash
# Run directly (no install needed)
npx @nutrient-sdk/font-tool create ./my-fonts

# Or install globally
npm install -g @nutrient-sdk/font-tool
```

## Usage

```bash
# Generate fonts.json inside the font directory
nutrient-font-tool create ./my-fonts
# → ./my-fonts/fonts.json

# Specify custom output path
nutrient-font-tool create ./my-fonts -o ./output/fonts.json

# Pretty-print the JSON
nutrient-font-tool create ./my-fonts --pretty
```

The tool recursively scans the input directory for font files.

### Options

| Option | Description |
|--------|-------------|
| `-o, --output <file>` | Output file (default: `<input-dir>/fonts.json`) |
| `--pretty` | Pretty-print JSON output |

## Supported Formats

- `.ttf` - TrueType
- `.otf` - OpenType
- `.ttc` - TrueType Collection
- `.otc` - OpenType Collection

## Output

Generates a `fonts.json` file with font metadata:

```json
{
  "v": 1,
  "availableFonts": [
    {
      "name": {
        "family": "Noto Sans",
        "fullName": "Noto Sans Regular",
        "subfamily": "Regular"
      },
      "filePath": "NotoSans-Regular.ttf",
      "codePoints": [[32, 126], [160, 255], ...],
      "sha1": "abc123...",
      "allowedToEmbed": true,
      "weight": 5
    }
  ]
}
```

## Requirements

- Node.js 18+

## Learn More

- [Dynamic Font Loading Guide](https://www.nutrient.io/guides/web/forms/fill-form-fields/dynamic-font-loading/) — How to use custom font bundles with Nutrient Web SDK
- [Nutrient Web SDK](https://www.nutrient.io/sdk/web/) — PDF SDK for web applications

## License

MIT
npm package: @nutrient-sdk/nudocs-cli
Description: Command-line interface for Nudocs.ai - upload, manage, and export documents
Author: PSPDFKit GmbH
Latest version: 1.0.0

# @nutrient-sdk/nudocs-cli

Command-line interface for [Nudocs.ai](https://nudocs.ai) - upload, manage, and export documents.

## Installation

```bash
npm install -g @nutrient-sdk/nudocs-cli
```

Or use directly with npx:

```bash
npx @nutrient-sdk/nudocs-cli upload my-document.md
```

## Setup

Get your API key from [Nudocs.ai](https://nudocs.ai) (click "Integration" after signing in).

Set your API key using one of these methods:

**Environment variable (recommended for CI/scripts):**
```bash
export NUDOCS_API_KEY="nudocs_your_key_here"
```

**Config file (recommended for personal use):**
```bash
mkdir -p ~/.config/nudocs
echo "nudocs_your_key_here" > ~/.config/nudocs/api_key
```

## Usage

### Upload a document

```bash
nudocs upload my-document.md
```

Uploads the file and returns an edit link. Supports markdown, docx, pdf, html, txt, and more.

### List documents

```bash
nudocs list
```

### Get edit link

```bash
nudocs link                    # Last uploaded document
nudocs link 01ABC123XYZ        # Specific document by ULID
```

### Download/Export a document

```bash
nudocs pull                           # Last doc as docx (default)
nudocs pull --format md               # Last doc as markdown
nudocs pull 01ABC123XYZ --format pdf  # Specific doc as PDF
nudocs pull --output report.docx      # Custom output filename
```

### Delete a document

```bash
nudocs delete 01ABC123XYZ
```

### Show configuration

```bash
nudocs config
```

## Supported Formats

### Input (upload)
- Markdown (`.md`)
- Microsoft Word (`.doc`, `.docx`)
- PDF (`.pdf`)
- HTML (`.html`)
- Plain text (`.txt`)
- OpenDocument (`.odt`)
- Rich Text (`.rtf`)
- EPUB (`.epub`)
- LaTeX (`.tex`, `.latex`)

### Output (export)
- Markdown (`.md`)
- Microsoft Word (`.docx`)
- PDF (`.pdf`)
- HTML (`.html`)
- Plain text (`.txt`)
- OpenDocument (`.odt`)
- Rich Text (`.rtf`)
- EPUB (`.epub`)

## Environment Variables

| Variable | Description |
|----------|-------------|
| `NUDOCS_API_KEY` | Your Nudocs API key |
| `NUDOCS_URL` | API base URL (default: `https://nudocs.ai`) |

## Use with AI Agents

This CLI works great with AI coding assistants and agents:

- **Claude Code / Codex**: Agents can exec `nudocs upload` and `nudocs pull` commands
- **Custom agents**: Any agent with shell access can use this CLI
- **Clawdbot**: See [@pspdfkit/nudocs-clawdbot-skill](https://clawdhub.com) for native integration

For MCP-based integrations (Claude Desktop), see [@nutrient-sdk/nudocs-mcp-server](https://github.com/PSPDFKit/nudocs-mcp-server).

## License

MIT © [PSPDFKit GmbH](https://pspdfkit.com)

## Links

- [Nudocs.ai](https://nudocs.ai)
- [GitHub Repository](https://github.com/PSPDFKit/nudocs-cli)
- [Report Issues](https://github.com/PSPDFKit/nudocs-cli/issues)
npm package: @nutrify/ngx-emoji-mart-picker
Description: Unmaintained fork of ngx-emoji-mart
Latest version: 1.0.2


# ngx-emoji-mart-picker

  

**This is an unmaintained fork with a few changes to the displayed emoji names of**:

  

GitHub: [TypeCtrl/ngx-emoji-mart](https://github.com/TypeCtrl/ngx-emoji-mart)

  

NPM: [@ctrl/ngx-emoji-mart](https://www.npmjs.com/package/@ctrl/ngx-emoji-mart)

  

The reason for this fork is to be able to use emoticons and short names of emojis within a content editable text area.

So it is possible to write e.g.

<code>':)'</code> and replace it with the proper emoji (the unicode 🙂 or any other of emoji-mart's sets)

or

<code>'\*heart-eyes\*'</code> and replace it with 😍 or any set of emojis.

  

This was also possible in the original, but the pre- and postfix of the displayed emojis in the preview was a colon which was interfering with emoticons e.g.

  

<code>':o' and '\:orange_heart\:'</code>

  

or

  

<code>':o' and ':o)'</code>.

  

The new indicator for emojis is an asterisk e.g. <code>'\*octopus\*'</code>.

  

The skin tone indicator remains a colon.

  

## Changes:

### Picker Component Properties

| Prop                    | Default                   | Description                                        |
| ----------------------- | ------------------------- | -------------------------------------------------- |
| **displayEmoticonOnly** | `false`                   | Hide shortNames of emojis with emoticons           |

### Emoji

  

In order to display an emoji as a button use one of the following syntaxes:

  

```html

<ngx-emoji  [emoji]="{ id: 'santa', skin: 3 }"  size="16"></ngx-emoji>

<ngx-emoji  emoji="*santa*:skin-tone-3:"  size="16"></ngx-emoji>

<ngx-emoji  emoji="*santa*"  set="emojione"  size="16"></ngx-emoji>

<ngx-emoji  emoji="santa"  set="emojione"  size="16"></ngx-emoji>

```

  

#### Emoji Fallback

  

```ts

emojiFallback  =  (emoji:  any,  props:  any)  =>  emoji  ?  `*${emoji.shortNames[0]}*`  :  props.emoji;

```
npm package: @nutrioniq/ui
Description: UI-Kit for nutrioniq project.
Author: DCDRins
Latest version: 0.0.10

# nutrioniq-ui

Empty project.

## Building and running on localhost

First install dependencies:

```sh
npm install
```

To run in hot module reloading mode:

```sh
npm start
```

To create a production build:

```sh
npm run build-prod
```

## Running

Open the file `dist/index.html` in your browser

## Testing

To run unit tests:

```sh
npm test
```

## Credits

Made with [createapp.dev](https://createapp.dev/)
npm package: @nutriot/morphagene-options
Description: Helper for editing Morphagene `options.txt` files
Latest version: 0.4.0

# @nutriot/morphagene-options

> Helper for editing [Morphagene](https://www.makenoisemusic.com/modules/morphagene) `options.txt` files

[![License](https://img.shields.io/github/license/nutriot/morphagene-options?color=blue&style=for-the-badge)](https://github.com/nutriot/morphagene-options/blob/main/LICENSE)
[![Version: npm](https://img.shields.io/npm/v/@nutriot/morphagene-options?style=for-the-badge)](https://www.npmjs.org/package/@nutriot/morphagene-options)
[![Version: jsr](https://img.shields.io/jsr/v/@nutriot/morphagene-options?style=for-the-badge)](https://jsr.io/@nutriot/morphagene-options)
[![Build: NodeJS](https://img.shields.io/github/actions/workflow/status/nutriot/morphagene-options/node.yml?logo=nodedotjs&logoColor=white&style=for-the-badge)](https://github.com/nutriot/morphagene-options/actions)
[![Build: Deno](https://img.shields.io/github/actions/workflow/status/nutriot/morphagene-options/deno.yml?logo=deno&logoColor=white&style=for-the-badge)](https://github.com/nutriot/morphagene-options/actions)

## Installation 💿

`npm install --save @nutriot/morphagene-options`

## Usage 🚀

```ts
// all environments
import { parse, stringify, type MorphageneOptions } from '@nutriot/morphagene-options'

// NodeJS only
import { parseFile } from '@nutriot/morphagene-options/fs'

// Bonus: schemas for Valibot and Zod
import { valibotSchema, zodSchema } from '@nutriot/morphagene-options'
```

## API ⚙️

### `parse`

Usage: `parse(optionsString, strict = true)`

Parses an options string into a JavaScript object.

### `stringify`

Usage: `stringify(optionsObject, strict = true)`

Stringifies a JavaScript object into an options string

### `parseFile`

> [!CAUTION]
> The following methods do not work in the browser

Parses an `options.txt` file into a JavaScript object.

Usage:

```ts
parseFile.sync('options.txt', strict = true)
await parseFile.async('options.txt', strict = true)
```

## License ©️

This work is licensed under [The MIT License](https://opensource.org/licenses/MIT).
npm package: @nutriot/responsive-ratio
Description: Library to adjust iFrame aspect-ratios reponsively
Latest version: 0.1.3
Deprecated: This package is no longer in development

# @nutriot/responsive-ratio

> Library to adjust iFrame aspect-ratios reponsively, written in TypeScript

[![npm](https://flat.badgen.net/npm/license/@nutriot/responsive-ratio)](https://www.npmjs.org/package/@nutriot/responsive-ratio)
[![npm](https://flat.badgen.net/npm/v/@nutriot/responsive-ratio)](https://www.npmjs.org/package/@nutriot/responsive-ratio)
[![CircleCI](https://flat.badgen.net/circleci/github/nutriot/responsive-ratio)](https://circleci.com/gh/nutriot/responsive-ratio)

## Installation

`npm install --save @nutriot/responsive-ratio`

## Usage

Import and initialize the module

```ts
import { responsiveRatio } from '@nutriot/responsive-ratio';

window.addEventListener('DOMContentLoaded', event => {
  const options = {
    selectors: 'iframe, video'
  };

  responsiveRatio(options);
});
```

Here's another example for a React application

```jsx
import React, { useEffect} from 'react'
import { responsiveRatio} from '@nutriot/responsive-ratio';

export default const App = props => {

  useEffect(() => responsiveRatio(), []);

  return (
    <iframe
      src="https://www.youtube.com/embed/-QFS_VPcbjI"
      width="1920"
      height="1080"
    />
  )
}
```

### Options

#### `injectStyles`

Type: `boolean`  
Default: `true`  

Specifies whether to inject default styles

#### `selectors`

Type: `string`  
Default: `iframe`  

CSS selector for elements that should be resized

#### `wrapperClass`

Type: `string`  
Default: `responsive-ratio` 

Specifies the wrapper elements default class name

## License

This work is licensed under [The MIT License](https://opensource.org/licenses/MIT)
npm package: @nutrition-web-components/nova
Description: Nova Web Component
Author: Vincent Ogloblinsky
Latest version: 0.0.1

# Nova Web Component

<p align="center">
  <img src="https://badges.herokuapp.com/browsers?firefox=64&googlechrome=71&safari=12&microsoftedge=17&iexplore=11"/>
</p>

<p align="center">
  <a href="https://travis-ci.org/vogloblinsky/nutrition-web-components"><img src="https://img.shields.io/travis/vogloblinsky/nutrition-web-components/develop.svg?label=Linux%20build" alt="Linux Build Status"/></a>
  <a href="https://www.browserstack.com/automate/public-build/T3JpQmgwYnd3QVhOTFJOaUVWTU5ici82RTFueDJYemNQbFVZSzd4dzBEcz0tLVJLZXdhc3NWSWgzU04rRkV0SFZvVGc9PQ==--da3c5152d96aadb619e03ad9be536670bcb41111"><img src="https://www.browserstack.com/automate/badge.svg?badge_key=T3JpQmgwYnd3QVhOTFJOaUVWTU5ici82RTFueDJYemNQbFVZSzd4dzBEcz0tLVJLZXdhc3NWSWgzU04rRkV0SFZvVGc9PQ==--da3c5152d96aadb619e03ad9be536670bcb41111"/></a>
  <a href="https://opensource.org/licenses/MIT"><img src="http://img.shields.io/badge/license-MIT-brightgreen.svg" alt="MIT badge"/></a>
</p>

<p align="center">
  <img src="images/nova.png"/>
</p>

# Installing the JavaScript Web Component

Link to it by adding the following to your `<head></head>`.

```html
<script src="https://unpkg.com/@nutrition-web-components/nova@x.x.x/dist/nova.js"></script>
```

The `x.x.x` is the specific version of the component, you should use specifc versions to prevent against breaking changes.

# Usage

```html
<nova-badge score="1"></nova-badge>
```

# Integrating with a Framework

This Web Component is build with [Stencil](http://stenciljs.com/) to compile the component into Web Components. And since they can be used within frameworks or in standard HTML websites the best resource to read is the [Stencil documentation](https://stenciljs.com/docs/overview) regarding framework integration.
npm package: @nutrition-web-components/nutri-score
Description: Nutri-score Web Component
Author: Vincent Ogloblinsky
Latest version: 0.0.1

# Nutri-score Web Component

<p align="center">
  <img src="https://badges.herokuapp.com/browsers?firefox=64&googlechrome=71&safari=12&microsoftedge=17&iexplore=11"/>
</p>

<p align="center">
  <a href="https://travis-ci.org/vogloblinsky/nutrition-web-components"><img src="https://img.shields.io/travis/vogloblinsky/nutrition-web-components/develop.svg?label=Linux%20build" alt="Linux Build Status"/></a>
  <a href="https://www.browserstack.com/automate/public-build/T3JpQmgwYnd3QVhOTFJOaUVWTU5ici82RTFueDJYemNQbFVZSzd4dzBEcz0tLVJLZXdhc3NWSWgzU04rRkV0SFZvVGc9PQ==--da3c5152d96aadb619e03ad9be536670bcb41111"><img src="https://www.browserstack.com/automate/badge.svg?badge_key=T3JpQmgwYnd3QVhOTFJOaUVWTU5ici82RTFueDJYemNQbFVZSzd4dzBEcz0tLVJLZXdhc3NWSWgzU04rRkV0SFZvVGc9PQ==--da3c5152d96aadb619e03ad9be536670bcb41111"/></a>
  <a href="https://www.npmjs.com/package/@nutrition-web-components/nutri-score"><img src="https://badge.fury.io/js/%40nutrition-web-components%2Fnutri-score.svg" alt="npm badge"/></a>
  <a href="https://opensource.org/licenses/MIT"><img src="http://img.shields.io/badge/license-MIT-brightgreen.svg" alt="MIT badge"/></a>
</p>

<p align="center">
  <img src="images/nutri-score.png"/>
</p>

# Installing the JavaScript Web Component

Link to it by adding the following to your `<head></head>`.

```html
<script src="https://unpkg.com/@nutrition-web-components/nutri-score@x.x.x/dist/nutri-score.js"></script>
```

The `x.x.x` is the specific version of the component, you should use specifc versions to prevent against breaking changes.

# Usage

```html
<nutri-score score="A"></nutri-score>
<nutri-score score="A" vertical></nutri-score>
```

# Integrating with a Framework

This Web Component is build with [Stencil](http://stenciljs.com/) to compile the component into Web Components. And since they can be used within frameworks or in standard HTML websites the best resource to read is the [Stencil documentation](https://stenciljs.com/docs/overview) regarding framework integration.
npm package: @nuts-foundation/irma-core
Description: The state machine for implementing IRMA flows, that plugins can register on
Latest version: 1.0.0

# IRMA core

This package contains the state machine for implementing IRMA flows. You can
register plugins with this state machine and then start the machine:

```javascript
const IrmaCore = require('irma-core');
const irma     = new IrmaCore(/* options */);

irma.use(/* Plugin A */);
irma.use(/* Plugin B */);

irma.start();
```

You can pass an options object to the constructor, which will be passed on to
each plugin that you register. Each plugin can choose which of your options to
use or ignore.

```javascript
const irma = new IrmaCore({
  debugging: true,            // Used by state machine and multiple plugins
  element:   '#irma-web-form' // Used by `irma-web` plugin
});
```

The `start` method starts the state machine and returns a Promise. Whatever
parameters you pass to the `start` method get passed to the `start` method of
the plugins too, but no plugins currently make use of that.

```javascript
irma.start()
    .then(result => console.log("Successful disclosure! 🎉", result))
    .catch(error => console.error("Couldn't do what you asked 😢", error));
```

This Promise only resolves when the state machine reaches the `Success` state
and only rejects when the machine reaches the `BrowserNotSupported` state. In
the latter case, plugins may already inform the user of this issue, so please
test if you need to catch this state yourself. You may wish to fall back to
another authentication method automatically by catching the rejection and
redirecting the user.
npm package: @nuts-foundation/irma-web
Description: A front-end to IRMA flows for in the web browser
Latest version: 1.0.0

# IRMA web

This plugin contains a front-end for IRMA flows in the web browser.

It is designed to be used with [`irma-css`](https://github.com/privacybydesign/irma-frontend-packages/tree/master/irma-css),
but can be used with different styling. `irma-css` is not a dependency of this
package by design, so you are free to use other styling.

If you *do* want to use `irma-css` (which is recommended), you may want to use
[the `irma-frontend` package](https://github.com/privacybydesign/irma-frontend-packages/tree/master/irma-frontend)
instead for ease of use, or take a look at
[`irma-web`](https://github.com/privacybydesign/irma-frontend-packages/tree/master/examples/browser/irma-web)
for a more hands-on implementation example.

## Usage

```javascript
const IrmaCore = require('irma-core');
const Web      = require('irma-web');

const irma = new IrmaCore({
  element: '#irma-web-form'
});

irma.use(Web);
irma.start();
```

## Options

### element

The `element` option should contain a selector that points to an element in
which to render the IRMA form. This is a required option.

### language

You can set the interface language by setting the `language` option. Currently
supported values: `en` and `nl`. Default is `nl`.

### translations

If you have more specific translation requirements, or if your use-case is not
logging a user in, you can override any of the strings in the interface using
the `translations` option. It is good practice to be specific in these texts to
avoid unnecessary confusion for your users.

```javascript
const irma = new IrmaCore({
  translations: {
    header:  'Sign the agreement with <i class="irma-web-logo">IRMA</i>',
    loading: 'Finding your agreement...'
  }
});
```

You can find the default values [in the translation files](https://github.com/privacybydesign/irma-frontend-packages/tree/master/plugins/irma-web/translations).

### showHelper

The option `showHelper` is a boolean that determines if the
[`irma-css` helper](https://privacybydesign.github.io/irma-frontend-packages/styleguide/section-examples.html#kssref-examples-helpers)
should be shown or not. Default is false.

_Note: the helper is supposed to be able to get triggered during the IRMA flow.
This is not possible yet. This makes it pretty useless right now. PRs and ideas
welcome._
npm package: @nutshelllab/dynamodb-table
Description: Just sugar syntax over AWS DynamoDB
Latest version: 0.0.12

# dynamodb-table
[![Build Status](https://travis-ci.org/nutshell-lab/dynamodb-table.svg?branch=master)](https://travis-ci.org/nutshell-lab/dynamodb-table) ![npm bundle size](https://img.shields.io/bundlephobia/min/@nutshelllab/dynamodb-table.svg) [![Maintainability](https://api.codeclimate.com/v1/badges/10d58a30e59d0062f915/maintainability)](https://codeclimate.com/github/nutshell-lab/dynamodb-table/maintainability)

> Just sugar syntax over AWS DynamoDB

:warning: Work in progress, not published yet.


## Install

```
yarn add @nutshelllab/dynamodb-table
```


## Usage

### Single primary key

```js
import Table from '@nutshelllab/dynamodb-table'

const usersStore = new Table('users')

(async ({ id, ...data }) => {
  const users = await usersStore.put({
    key: { id },
    data
  })
})
```

### Combined primary key

```js
import Table from '@nutshelllab/dynamodb-table'

const postsStore = new Table('users_posts')

(async ({ userId, id, ...data }) => {
  const users = await usersStore.put({
    key: { userId, id },
    data
  })
})
```


## API

### method(arg1, arg2)

#### arg1

Type: `string`

Arg1 description

##### arg2

Type: `Object`

Arg2 description


## License

MIT © [Nutshell](https://nutshell-lab.com)
npm package: @nutshelllab/sns-messenger
Description: Just sugar syntax over AWS SNS.send()
Latest version: 2.2.2

# sns-messenger
[![Build Status](https://travis-ci.org/nutshell-lab/sns-messenger.svg?branch=master)](https://travis-ci.org/nutshell-lab/sns-messenger) ![npm bundle size](https://img.shields.io/bundlephobia/min/@nutshelllab/sns-messenger.svg) [![Maintainability](https://api.codeclimate.com/v1/badges/10d58a30e59d0062f915/maintainability)](https://codeclimate.com/github/nutshell-lab/sns-messenger/maintainability)

> Just sugar syntax over AWS SNS.send()


## Install

```
yarn add @nutshelllab/sns-messenger
```


## Usage

```js
import send from '@nutshelllab/sns-messenger'

const arn = topic => {
  const region = process.env.AWS_REGION
  const account = process.env.AWS_ACCOUNT_ID
  const stage = process.env.SLS_STAGE
  return `arn:aws:sns:${region}:${account}:${topic}-${stage}`
}

(async () => {
  await send(arn('my-topic'), { foo: 'bar' }, { Subject: 'foobar' })
})
```


## API

### snsMessenger(topicArn, payload, options)

#### topicArn

Type: `string`

SNS topic's arn to send message

##### payload

Type: `Object`

Message payload

##### options

Type: `Object`

Extra AWS SNS parameters, see [AWSJavaScriptSDK documentation](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#publish-property)


## License

MIT © [Nutshell](https://nutshell-lab.com)
npm package: @nutshelllabs/layout
Description: Resolve document component's layout
Author: Diego Muracciole
Latest version: 4.4.4

<p align="center">
  <img src="https://user-images.githubusercontent.com/5600341/27505816-c8bc37aa-587f-11e7-9a86-08a2d081a8b9.png" height="280px">
</p>

# @nutshelllabs/layout
npm package: @nutshelllabs/pdfkit
Description: A PDF generation library for Node.js
Author: Devon Govett
Latest version: 4.1.1

<p align="center">
  <img src="https://user-images.githubusercontent.com/5600341/27505816-c8bc37aa-587f-11e7-9a86-08a2d081a8b9.png" height="280px">
</p>

# @nutshelllabs/pdfkit

A JavaScript PDF generation library for Node and the browser.

## Acknowledges

This project is a fork of [pdfkit](https://github.com/foliojs/pdfkit) by @devongovett and continued under the scope of this project since it has react-pdf specific features. Any recongnition should go to him and the original project mantainers.

## Description

PDFKit is a PDF document generation library for Node and the browser that makes creating complex, multi-page, printable documents easy.
It's written in CoffeeScript, but you can choose to use the API in plain 'ol JavaScript if you like. The API embraces
chainability, and includes both low level functions as well as abstractions for higher level functionality. The PDFKit API
is designed to be simple, so generating complex documents is often as simple as a few function calls.

Check out some of the [documentation and examples](http://pdfkit.org/docs/getting_started.html) to see for yourself!
You can also read the guide as a [self-generated PDF](http://pdfkit.org/docs/guide.pdf) with example output displayed inline.
If you'd like to see how it was generated, check out the README in the [docs](https://github.com/devongovett/pdfkit/tree/master/docs)
folder.

You can also try out an interactive in-browser demo of PDFKit [here](http://pdfkit.org/demo/browser.html).

## Installation

Installation uses the [npm](http://npmjs.org/) package manager. Just type the following command after installing npm.

    npm install @nutshelllabs/pdfkit

## Features

- Vector graphics
  - HTML5 canvas-like API
  - Path operations
  - SVG path parser for easy path creation
  - Transformations
  - Linear and radial gradients
- Text
  - Line wrapping
  - Text alignments
  - Bulleted lists
- Font embedding
  - Supports TrueType (.ttf), OpenType (.otf), WOFF, WOFF2, TrueType Collections (.ttc), and Datafork TrueType (.dfont) fonts
  - Font subsetting
  - See [fontkit](http://github.com/devongovett/fontkit) for more details on advanced glyph layout support.
- Image embedding
  - Supports JPEG and PNG files (including indexed PNGs, and PNGs with transparency)
- Annotations
  - Links
  - Notes
  - Highlights
  - Underlines
  - etc.

## Coming soon!

- Patterns fills
- Outlines
- PDF Security
- Higher level APIs for creating tables and laying out content
- More performance optimizations
- Even more awesomeness, perhaps written by you! Please fork this repository and send me pull requests.

## Documentation

For complete API documentation and more examples, see the [PDFKit website](http://pdfkit.org/).

## License

PDFKit is available under the MIT license.
npm package: @nutshelllabs/png-js
Description: A PNG decoder in JS
Author: Devon Govett
Latest version: 3.0.1

<p align="center">
  <img src="https://user-images.githubusercontent.com/5600341/27505816-c8bc37aa-587f-11e7-9a86-08a2d081a8b9.png" height="280px">
</p>

# @nutshelllabs/png-js

A PNG decoder in JS for the canvas element or Node.js.

## Acknowledges

This project is a fork of [png.js](https://github.com/foliojs/png.js) by @devongovett and continued under the scope of this project since it has react-pdf specific features. Any recongnition should go to him and the original project mantainers.

## About this fork

> Updated to 977b857a11676c1e720e79ed8d9178a005a9abd6

- Build node and browser specific bundles
- Uses rollup for build

## Browser Usage

Simply include png.js and zlib.js on your HTML page, create a canvas element, and call PNG.load to load an image.

    <canvas></canvas>
    <script src="zlib.js"></script>
    <script src="png.js"></script>
    <script>
        var canvas = document.getElementsByTagName('canvas')[0];
        PNG.load('some.png', canvas);
    </script>

The source code for the browser version resides in `png.js` and also supports loading and displaying animated PNGs.

## Node.js Usage

Install the module using npm

    sudo npm install png-js

Require the module and decode a PNG

    import PNG from 'png-js';
    PNG.decode('some.png', function(pixels) {
        // pixels is a 1d array (in rgba order) of decoded pixel data
    });

You can also call `PNG.load` if you want to load the PNG (but not decode the pixels) synchronously. If you already
have the PNG data in a buffer, simply use `new PNG(buffer)`. In both of these cases, you need to call `png.decode`
yourself which passes your callback the decoded pixels as a buffer. If you already have a buffer you want the pixels
copied to, call `copyToImageData` with your buffer and the decoded pixels as returned from `decodePixels`.
npm package: @nutshelllabs/reconciler
Description: Define uninitialized elements
Author: Diego Muracciole
Latest version: 2.0.1

<p align="center">
  <img src="https://user-images.githubusercontent.com/5600341/27505816-c8bc37aa-587f-11e7-9a86-08a2d081a8b9.png" height="280px">
</p>

# @nutshelllabs/reconciler
npm package: @nutshelllabs/svgkit
Description: A SVG generation library for Node.js and browser
Latest version: 2.2.4

<p align="center">
  <img src="https://user-images.githubusercontent.com/5600341/27505816-c8bc37aa-587f-11e7-9a86-08a2d081a8b9.png" height="280px">
</p>

# @nutshelllabs/svgkit

A SVG generation library for Node.js and browser.

Has a `pdfkit` compatible API

## TODOs:

- Gradients
- Default fonts
- Embeded fonts (in progress)
npm package: @nutshelllabs/types
Description: React-pdf TypeScript definitions
Author: Diego Muracciole
Latest version: 2.9.4

<p align="center">
  <img src="https://user-images.githubusercontent.com/5600341/27505816-c8bc37aa-587f-11e7-9a86-08a2d081a8b9.png" height="280px">
</p>

# @nutshelllabs/types

> React-pdf TypeScript definitions

## How to install

```sh
yarn add @nutshelllabs/types
```

## License

MIT © [Diego Muracciole](http://github.com/diegomura)
npm package: @nutshelllabs/yoga
Description: Prebuilt yoga-layout package
Author: Nutshell Labs
Latest version: 4.1.3

<p align="center">
  <img src="https://user-images.githubusercontent.com/5600341/27505816-c8bc37aa-587f-11e7-9a86-08a2d081a8b9.png" height="280px">
</p>

# @nutshelllabs/yoga

> Prebuilt [yoga-layout](https://github.com/facebook/yoga)

## Acknowledges

This package ship [yoga-wasm-web/asm](https://github.com/shuding/yoga-wasm-web) with commonjs entry

## Install

```
$ npm install @nutshelllabs/yoga
```

## Usage

```js
import Yoga from '@nutshelllabs/yoga';
// Same as if imported from yoga-layout
```