> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chromiumly.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# PDFEngines

> Static methods for convert, merge, split, rotate, watermark, stamp, metadata, bookmarks, flatten, encrypt, embed, and generate.

All methods are static. They use the configured endpoint (and auth) from `Chromiumly.configure()`.

## convert(options)

Convert PDFs to PDF/A and/or PDF/UA.

```typescript theme={null}
PDFEngines.convert({
  files: PathLikeOrReadStream[];
  pdfa?: PdfFormat;
  pdfUA?: boolean;
  downloadFrom?: DownloadFrom;
  webhook?: WebhookOptions;
}): Promise<Buffer>
```

## merge(options)

Merge multiple PDFs into one.

```typescript theme={null}
PDFEngines.merge({
  files: PathLikeOrReadStream[];
  pdfa?: PdfFormat;
  pdfUA?: boolean;
  metadata?: Metadata;
  downloadFrom?: DownloadFrom;
  webhook?: WebhookOptions;
  flatten?: boolean;
  watermark?: PdfEngineWatermark;
  stamp?: PdfEngineStamp;
  rotate?: PdfEngineRotate;
}): Promise<Buffer>
```

## rotate(options)

Rotate pages of one or more PDFs (dedicated [Gotenberg rotate route](https://gotenberg.dev/docs/manipulate-pdfs/rotate-pdfs)).

```typescript theme={null}
PDFEngines.rotate({
  files: PathLikeOrReadStream[];
  angle: 90 | 180 | 270;
  pages?: string;
  webhook?: WebhookOptions;
}): Promise<Buffer>
```

## split(options)

Split PDFs by page range or intervals.

```typescript theme={null}
PDFEngines.split({
  files: PathLikeOrReadStream[];
  options: Split;  // { mode: 'pages' | 'intervals', span: string, unify?, flatten? }
  webhook?: WebhookOptions;
  watermark?: PdfEngineWatermark;
  stamp?: PdfEngineStamp;
  rotate?: PdfEngineRotate;
}): Promise<Buffer>
```

Import the `PdfEngineRotate` type from `chromiumly` when typing `rotate` options.

## watermark(options)

Apply a watermark to one or more PDFs.

```typescript theme={null}
PDFEngines.watermark({
  files: PathLikeOrReadStream[];
  watermark: PdfEngineWatermark;
  webhook?: WebhookOptions;
}): Promise<Buffer>
```

## stamp(options)

Apply a stamp to one or more PDFs.

```typescript theme={null}
PDFEngines.stamp({
  files: PathLikeOrReadStream[];
  stamp: PdfEngineStamp;
  webhook?: WebhookOptions;
}): Promise<Buffer>
```

## flatten(files)

Flatten forms and annotations.

```typescript theme={null}
PDFEngines.flatten(
  files: PathLikeOrReadStream[],
  webhook?: WebhookOptions
): Promise<Buffer>
```

## readMetadata(files)

Read metadata from PDFs.

```typescript theme={null}
PDFEngines.readMetadata(
  files: PathLikeOrReadStream[],
  webhook?: WebhookOptions
): Promise<Buffer>
```

## writeMetadata(options)

Write metadata to PDFs.

```typescript theme={null}
PDFEngines.writeMetadata({
  files: PathLikeOrReadStream[];
  metadata: Metadata;  // key-value, e.g. Author, Title, Keywords
  webhook?: WebhookOptions;
}): Promise<Buffer>
```

## readBookmarks(files, webhook?)

Read bookmarks from PDFs.

```typescript theme={null}
PDFEngines.readBookmarks(
  files: PathLikeOrReadStream[],
  webhook?: WebhookOptions
): Promise<Buffer>
```

## writeBookmarks(options)

Write bookmarks to PDFs.

```typescript theme={null}
PDFEngines.writeBookmarks({
  files: PathLikeOrReadStream[];
  bookmarks: Bookmark[] | Record<string, Bookmark[]>;
  webhook?: WebhookOptions;
}): Promise<Buffer>
```

## encrypt(options)

Encrypt PDFs with user and optional owner password.

```typescript theme={null}
PDFEngines.encrypt({
  files: PathLikeOrReadStream[];
  options: { userPassword: string; ownerPassword?: string };
  webhook?: WebhookOptions;
}): Promise<Buffer>
```

## embed(options)

Attach files to existing PDFs.

```typescript theme={null}
PDFEngines.embed({
  files: PathLikeOrReadStream[];   // PDFs to modify
  embeds: PathLikeOrReadStream[];  // files to attach
  webhook?: WebhookOptions;
}): Promise<Buffer>
```

## generate(filename, buffer)

Convenience: write a buffer to `__generated__/<filename>` in the current working directory.

```typescript theme={null}
PDFEngines.generate(filename: string, buffer: Buffer): Promise<void>
```

Creates `__generated__` if it does not exist.
