32 lines
1.1 KiB
Markdown
32 lines
1.1 KiB
Markdown
|
|
```swift title="Swift"
|
||
|
|
import Foundation
|
||
|
|
import Kreuzberg
|
||
|
|
import RustBridge
|
||
|
|
|
||
|
|
// The Swift binding throws `RustString` (not `KreuzbergError`) for every
|
||
|
|
// failure surfaced from the Rust core. The string preserves the original
|
||
|
|
// error variant name and message (e.g. "UnsupportedFormat: ...",
|
||
|
|
// "MissingDependency: ...", "Parsing: ...") so callers can pattern-match
|
||
|
|
// on the prefix or simply print the message.
|
||
|
|
do {
|
||
|
|
let config = try extractionConfigFromJson("{}")
|
||
|
|
let result = try extractFileSync("document.pdf", nil, config)
|
||
|
|
print(result.content().toString())
|
||
|
|
} catch let error as RustString {
|
||
|
|
let message = error.toString()
|
||
|
|
if message.contains("UnsupportedFormat") {
|
||
|
|
print("Unsupported format: \(message)")
|
||
|
|
} else if message.contains("MissingDependency") {
|
||
|
|
print("Install the required dependency: \(message)")
|
||
|
|
} else if message.contains("Parsing") {
|
||
|
|
print("Corrupt or invalid document: \(message)")
|
||
|
|
} else if message.contains("Io") {
|
||
|
|
print("File error: \(message)")
|
||
|
|
} else {
|
||
|
|
print("Extraction failed: \(message)")
|
||
|
|
}
|
||
|
|
} catch {
|
||
|
|
print("Unexpected error: \(error)")
|
||
|
|
}
|
||
|
|
```
|