<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
ikromjon / nativephp-mobile-document-scanner example snippets
use Ikromjon\DocumentScanner\Facades\DocumentScanner;
use Ikromjon\DocumentScanner\Events\DocumentScanned;
use Native\Mobile\Attributes\OnNative;
// In your Livewire component:
DocumentScanner::scan();
// Handle the result (Livewire method)
#[OnNative(DocumentScanned::class)]
public function onScanned($data)
{
$paths = $data['paths']; // ['/path/scan_0.jpg', ...]
$pageCount = $data['pageCount']; // 2
}
use Ikromjon\DocumentScanner\Facades\DocumentScanner;
// Scan with defaults
DocumentScanner::scan();
// Scan with options
DocumentScanner::scan([
'maxPages' => 3,
'outputFormat' => 'jpeg',
'jpegQuality' => 85,
]);
// Scan a single page (e.g. ID card)
DocumentScanner::scan(['maxPages' => 1]);
// Scan to PDF
DocumentScanner::scan(['outputFormat' => 'pdf']);
use Ikromjon\DocumentScanner\Data\ScanOptions;
use Ikromjon\DocumentScanner\Enums\OutputFormat;
DocumentScanner::scan(new ScanOptions(
maxPages: 5,
outputFormat: OutputFormat::Pdf,
));
use Livewire\Component;
use Native\Mobile\Attributes\OnNative;
use Ikromjon\DocumentScanner\Facades\DocumentScanner;
use Ikromjon\DocumentScanner\Events\DocumentScanned;
use Ikromjon\DocumentScanner\Events\ScanCancelled;
use Ikromjon\DocumentScanner\Events\ScanFailed;
class DocumentScannerComponent extends Component
{
public array $scannedFiles = [];
public string $error = '';
public function scan()
{
DocumentScanner::scan(['maxPages' => 5]);
}
#[OnNative(DocumentScanned::class)]
public function onScanned($data)
{
$this->scannedFiles = $data['paths'];
}
#[OnNative(ScanCancelled::class)]
public function onCancelled()
{
// User dismissed the scanner
}
#[OnNative(ScanFailed::class)]
public function onFailed($data)
{
$this->error = $data['error'];
}
}
use Ikromjon\DocumentScanner\Events\DocumentScanned;
class HandleDocumentScanned
{
public function handle(DocumentScanned $event): void
{
// $event->paths — array of file paths
// $event->pageCount — number of pages scanned
// $event->outputFormat — 'jpeg' or 'pdf'
}
}
use Ikromjon\DocumentScanner\Facades\DocumentScanner;
use Ikromjon\DocumentScanner\Events\PdfCreated;
use Native\Mobile\Attributes\OnNative;
// Combine images into a PDF
$result = DocumentScanner::imagesToPdf([
'/path/scan_0.jpg',
'/path/scan_1.jpg',
]);
$pdfPath = $result['path']; // '/path/combined_1712345678.pdf'
// Listen for completion
#[OnNative(PdfCreated::class)]
public function onPdfCreated($data)
{
$pdfPath = $data['path'];
}