Bead pdftract-5lvpu implements the Swift SDK for pdftract as a subprocess-based SDK using Foundation's Process with async/await. Targets macOS 13+ and Linux only; explicitly excludes iOS due to Apple's subprocess restrictions. Acceptance criteria status: - PASS: SPM package structure (Package.swift configured) - PASS: All 9 contract methods exposed in Methods.swift - PASS: All 8 error cases defined in Error.swift - PASS: iOS documented as unsupported in README.md - PASS: CI workflow configured (pdftract-swift-publish.yaml) - PASS: AsyncThrowingStream cancellation implemented - PASS: All model types complete (14 model files) - PASS: All options types complete (ExtractionOptions, TextOptions, etc.) - PASS: Conformance test suite defined (ConformanceTests.swift) - PASS: Cross-platform Process support (ProcessRunner actor) Files updated: - swift-sdk/README.md: Fixed GitHub URL from placeholder to jedarden/pdftract-swift Verification note: notes/pdftract-5lvpu.md References: - Plan: SDK Architecture / The Ten SDKs, line 3480 - Plan: SDK Architecture / Per-SDK Release Channels, line 3577 - Plan: SDK Acceptance Criteria, lines 3581-3589 - ADR-009: Argo Workflows on iad-ci only
40 lines
904 B
Swift
40 lines
904 B
Swift
//
|
|
// Pdftract.swift
|
|
// Pdftract
|
|
//
|
|
// Main Pdftract client struct with public API.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
#if canImport(FoundationNetworking)
|
|
import FoundationNetworking
|
|
#endif
|
|
|
|
/// Main Pdftract client for PDF extraction.
|
|
///
|
|
/// This struct provides async methods for extracting content from PDFs
|
|
/// by spawning a pdftract binary subprocess and parsing its JSON output.
|
|
public struct Pdftract {
|
|
/// Path to the pdftract executable.
|
|
private let binaryPath: String
|
|
|
|
/// Create a new Pdftract client.
|
|
///
|
|
/// - Parameter binaryPath: Path to the pdftract binary (default: "pdftract").
|
|
public init(binaryPath: String = "pdftract") {
|
|
self.binaryPath = binaryPath
|
|
}
|
|
}
|
|
|
|
/// Source enum for PDF input.
|
|
public enum Source {
|
|
/// PDF from a file path.
|
|
case path(String)
|
|
|
|
/// PDF from a URL.
|
|
case url(URL)
|
|
|
|
/// PDF from raw bytes.
|
|
case bytes(Data)
|
|
}
|