# Page Footer

Repeating page footer.

> For the complete documentation index, see [llms.txt](/llms.txt). Markdown variants are available by appending `.md` to any docs URL. An agent skill is available at [/.well-known/agent-skills/site-skill.md](/.well-known/agent-skills/site-skill.md).

## Installation

```bash
npx shadcn@latest add @angular-pdfcn/takumi/page-footer
```

To install manually, add the dependencies:

```bash
npm install takumi-pdf @takumi-rs/helpers
```

Then copy these files into your project and update the import paths to match your setup:

- `components/pdf/page-footer/page-footer.ts`
- `lib/resolve-color.ts`
- `components/pdf/theme-provider.ts`
- `lib/pdf-renderer.ts`
- `lib/pdf-primitives.ts`
- `lib/render.ts`
- `lib/pdf-themes/professional.ts`
- `lib/pdf-themes/primitives.ts`
- `types/pdf-themes.ts`
- `types/pdf-components.ts`

## Usage

```ts
import { Component } from "@angular/core";

import { PdfPageFooter } from "@/components/pdf/page-footer/page-footer";
import { PdfText } from "@/components/pdf/text/text";
import { PdfcnThemeProvider } from "@/components/pdf/theme-provider";
import {
  TakumiDocument,
  TakumiPage,
  TakumiView,
} from "@/lib/pdf-primitives";

@Component({
  imports: [
    TakumiDocument,
    TakumiPage,
    PdfcnThemeProvider,
    TakumiView,
    PdfPageFooter,
    PdfText,
  ],
  template: `
    <takumi-document>
      <takumi-page [size]="{ height: 300, width: 595 }">
        <pdf-theme-provider>
          <takumi-view
            [style]="{
              display: 'flex',
              flexDirection: 'column',
              minHeight: 220,
            }"
          >
            <pdf-text [style]="textStyle"
              >Invoice #1042 · Acme Corp · March 2026</pdf-text
            >
            <pdf-text [style]="textStyle"
              >The footer remains visually separated from the document
              body.</pdf-text
            >
            <takumi-view [style]="{ flex: 1 }" />
            <pdf-page-footer
              leftText="© 2026 Acme Corp"
              centerText="Confidential"
              rightText="Page 1 of 1"
              variant="simple"
            />
          </takumi-view>
        </pdf-theme-provider>
      </takumi-page>
    </takumi-document>
  `,
})
export class PageFooterDemo {
  protected readonly textStyle = {
    color: "#555555",
    fontSize: 10,
    lineHeight: 1.6,
    marginBottom: 6,
  };
}
```

## API Reference

### PdfPageFooter

| Input         | Type                                                                               | Default    |
| ------------- | ---------------------------------------------------------------------------------- | ---------- |
| `leftText`    | `string \| TemplateRef<unknown>`                                                   | -          |
| `rightText`   | `string \| TemplateRef<unknown>`                                                   | -          |
| `centerText`  | `string \| TemplateRef<unknown>`                                                   | -          |
| `variant`     | `'simple' \| 'centered' \| 'branded' \| 'minimal' \| 'three-column' \| 'detailed'` | `'simple'` |
| `background`  | `string`                                                                           | -          |
| `textColor`   | `string`                                                                           | -          |
| `marginTop`   | `number`                                                                           | -          |
| `address`     | `string`                                                                           | -          |
| `phone`       | `string`                                                                           | -          |
| `email`       | `string`                                                                           | -          |
| `website`     | `string`                                                                           | -          |
| `fixed`       | `boolean`                                                                          | `false`    |
| `sticky`      | `boolean`                                                                          | `false`    |
| `pagePadding` | `number`                                                                           | `0`        |
| `noWrap`      | `boolean`                                                                          | `true`     |