# Deno

## Content

<span style="color: #7cafc2">Updated 3/06/2026.</span>

## What is Deno?

Deno is a modern JavaScript/TypeScript runtime created by the original Node.js developer. It features secure by default execution and built-in TypeScript support.

## Prerequisites

* **Node.js (version 16 or higher)**
* **npm (version 7 or higher)**
* **Deno installed**
* A **code editor** (VS Code recommended)
* Basic knowledge of **JavaScript and modern runtimes (Node.js / Deno)**

## Installation

### Install Deno:

```bash
npm install -g deno
```

### Verify installation:

```bash
deno --version
```

## Working Example

### Step 1 — Create a Project

```bash
mkdir dspdf-deno-demo
cd dspdf-deno-demo
```

### Step 2 — Install DsPdfJS

```bash
npm i @mescius/ds-pdf
```

### Step 3 — **Create** `deno-pdf-example.ts`in the same directory:

```typescript
// deno-pdf-example.ts
import fs from "node:fs";
import path from "node:path";
import { fileURLToPath } from "node:url";
import { createRequire } from "node:module";
import { Buffer } from "node:buffer";

// Load CommonJS build in ESM
const require = createRequire(import.meta.url);
const { connectDsPdf, DsPdfConfig, ObjectManager, PdfDocument } = require("@mescius/ds-pdf");

// Resolve current directory
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

// Absolute path to WASM
const wasmPath = path.resolve(__dirname, "node_modules/@mescius/ds-pdf/assets/DsPdf.wasm");
DsPdfConfig.wasmUrl = wasmPath;

async function createPdf() {
  console.log("🚀 Starting PDF generation in Deno...");

  const connected = await connectDsPdf();
  if (!connected) throw new Error("Failed to initialize DsPdfJS.");

  const om = new ObjectManager();
  try {
    const doc = new PdfDocument(om);
    const page = doc.newPageContext();

    page.drawText(
      { text: "Hello from Deno + DsPdfJS", fontSize: 18, foreColor: "DarkBlue" },
      50,
      50
    );

    const pdfData = doc.savePdf();
    const buffer = Buffer.from(pdfData.buffer || pdfData);

    fs.writeFileSync("deno-example.pdf", buffer);

    console.log("✅ deno-example.pdf created successfully!");
  } finally {
    om.dispose();
  }
}

createPdf().catch(console.error);
```

### Step 4 — Run the Example

```bash
deno run --allow-read --allow-write deno-pdf-example.ts
```

### Expected Result

After execution, you'll see:

```auto
🚀 Starting PDF generation in Deno...
✅ deno-example.pdf created successfully!
```

A PDF file `deno-example.pdf` will be created in your current directory containing the text "*Hello from Deno!*" in dark blue.

### Project Structure

```auto
dspdf-deno-demo/
├── node_modules/
├── deno-pdf-example.ts
├── package.json
├── package-lock.json
```