npm package: @neat-pdf/sdk
Description: Official TypeScript SDK for the Neat PDF API
Author: Neat PDF
Latest version: 0.1.8

<p align="center">
  <img src="https://www.neat-pdf.com/logo.png" alt="Neat PDF" width="200" />
</p>

<h1 align="center">@neat-pdf/sdk</h1>

<p align="center">
  Official TypeScript SDK for the <a href="https://www.neat-pdf.com">Neat PDF</a> API
</p>

<p align="center">
  <a href="https://www.npmjs.com/package/@neat-pdf/sdk"><img src="https://img.shields.io/npm/v/@neat-pdf/sdk" alt="npm version"></a>
  <a href="https://github.com/wdelmas/neat-pdf/blob/main/packages/sdk/LICENSE"><img src="https://img.shields.io/npm/l/@neat-pdf/sdk" alt="license"></a>
</p>

---

## Installation

```bash
npm install @neat-pdf/sdk
```

## Get Your API Key

1. Go to [neat-pdf.com](https://www.neat-pdf.com) and sign up
2. Open the menu and click **Generate Key**
3. Copy your key immediately — it's only displayed once

## Quick Start

```typescript
import { NeatPdf } from "@neat-pdf/sdk";

const client = new NeatPdf({
  apiKey: "your-api-key",
});

const response = await client.htmlToPdf({
  body: {
    html: "<h1>Hello, World!</h1>",
  },
});

if (response.error) {
  console.error(response.error);
} else {
  // response.data is a Blob containing the PDF
  const pdf = response.data;
}
```

## Features

- **HTML to PDF** - Convert HTML content to PDF
- **URL to PDF** - Capture any webpage as PDF
- **Office to PDF** - Convert Word, PowerPoint, and text files
- **Compress PDF** - Reduce PDF file size with quality control

## Usage

### HTML to PDF

Convert HTML content with full control over paper size, margins, and rendering options.

```typescript
const response = await client.htmlToPdf({
  body: {
    html: "<h1>Invoice #123</h1><p>Thank you for your purchase.</p>",
    paperWidth: "8.5in",
    paperHeight: "11in",
    marginTop: "1in",
    marginBottom: "1in",
    marginLeft: "0.5in",
    marginRight: "0.5in",
    scale: 1,
    printBackground: true,
  },
});
```

### URL to PDF

Capture any webpage as a PDF.

```typescript
const response = await client.urlToPdf({
  body: {
    url: "https://example.com",
    landscape: true,
    printBackground: true,
  },
});
```

### Office to PDF

Convert Word documents, PowerPoint presentations, and text files.

```typescript
const file = new File([buffer], "document.docx", {
  type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
});

const response = await client.officeToPdf({
  body: {
    file,
    landscape: false,
  },
});
```

### Compress PDF

Reduce PDF file size with configurable quality settings.

```typescript
const file = new File([buffer], "large.pdf", { type: "application/pdf" });

const response = await client.compressPdf({
  body: {
    file,
    quality: 75,
    reduceImageResolution: true,
    maxImageResolution: "150",
  },
});
```

## Configuration

```typescript
interface NeatPdfConfig {
  apiKey: string;
  baseUrl?: string; // Default: 'https://api.neat-pdf.com/functions/v1'
  timeout?: number; // Default: 60000 (60 seconds)
}
```

## Error Handling

All methods return a response object with either `data` or `error`:

```typescript
const response = await client.htmlToPdf({
  body: { html: "<h1>Hello</h1>" },
});

if (response.error) {
  // Handle error
  console.error(response.error.error); // Error message
  console.error(response.error.details); // Optional details
} else {
  // Success - response.data is a Blob
  const pdf = response.data;
}
```

## Documentation

For full API documentation, visit [https://www.neat-pdf.com/docs](https://www.neat-pdf.com/docs)

## License

[Apache-2.0](./LICENSE)