pdftract/templates/sdk-skeleton/swift
jedarden e3c7b2eec0 fix(pdftract-l993m): fix Tera template syntax in Methods templates
Fix incorrect Tera template syntax in per-language Methods templates:
- Change `elsif` to `elif` (correct Tera conditional syntax)
- Fix inline ternary-like syntax to use proper `{% if %}...{% else %}...{% endif %}`
- Fix truncated package name in Java template (codegen → codegen)

Affected templates:
- PHP: Methods.php.tera
- Python: methods.py.tera
- Ruby: methods.rb.tera
- Swift: Methods.swift.tera
- Java: Methods.java.tera

All 8 subprocess SDK templates now render correctly with the codegen
command. Verified via `pdftract sdk codegen --lang <lang> --out /tmp/sdk-<lang>`.

Co-Authored-By: Claude Code <noreply@anthropic.com>
Bead-Id: pdftract-l993m
2026-05-18 02:29:21 -04:00
..
Sources/PdftractCodegen fix(pdftract-l993m): fix Tera template syntax in Methods templates 2026-05-18 02:29:21 -04:00
Tests/PdftractTests feat(pdftract-l993m): complete per-language Tera template scaffolding 2026-05-18 02:01:46 -04:00
GENERATED.tera feat(pdftract-l993m): complete per-language Tera template scaffolding 2026-05-18 02:01:46 -04:00
Package.swift.tera feat(pdftract-l993m): complete per-language Tera template scaffolding 2026-05-18 02:01:46 -04:00
README.md.tera feat(pdftract-l993m): complete per-language Tera template scaffolding 2026-05-18 02:01:46 -04:00

# pdftract-swift

Swift SDK for pdftract - PDF extraction and conformance testing.

## Installation

Add to your `Package.swift`:

```swift
dependencies: [
    .package(url: "https://github.com/jedarden/pdftract-swift", from: "{{ version }}")
]
```

## Usage

### Basic extract

```swift
import Pdftract

let client = Pdftract()
let doc = try client.extract(PathSource("document.pdf"))
print("Pages: \(doc.pages.count)")
```

### Extract with OCR

```swift
let options = ExtractOptions()
options.ocrLanguage = "eng"
options.ocrThreshold = 0.7

let doc = try client.extract(PathSource("scanned.pdf"), options: options)
```

### Search

```swift
for await match in client.search(PathSource("document.pdf"), "invoice") {
    print("Found on page \(match.page): \(match.text)")
}
```

### Stream extraction

```swift
for await page in client.extractStream(PathSource("large.pdf")) {
    print("Page \(page.page): \(page.blocks.count) blocks")
}
```

## Binary version compatibility

This SDK requires pdftract {{ version }}. Download from:
https://github.com/jedarden/pdftract/releases/tag/v{{ version }}

## Troubleshooting

### Binary not found
Ensure `pdftract` is on your PATH. The SDK probes PATH for the executable.

### Version mismatch
The SDK will refuse to invoke mismatched binary versions. Install the correct version.

### Network failure
For remote URLs, check your network connection and TLS certificate chain.