1. Go to this page and download the library: Download codewithathis/paperless-ngx library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
use Codewithathis\PaperlessNgx\PaperlessService;
class DocumentController extends Controller
{
public function __construct(private PaperlessService $paperlessService)
{
}
public function index()
{
$documents = $this->paperlessService->getDocuments();
return response()->json($documents);
}
}
// Set token
$paperlessService->setToken('your_api_token');
// Or in constructor
$paperlessService = new PaperlessService(
'http://your-paperless-instance.com',
'your_api_token'
);
// Set credentials
$paperlessService->setBasicAuth('username', 'password');
// Or in constructor
$paperlessService = new PaperlessService(
'http://your-paperless-instance.com',
null,
'username',
'password'
);
// Download processed version
$content = $paperlessService->downloadDocument(123);
// Download original version
$originalContent = $paperlessService->downloadDocument(123, true);
// Search in database only
$results = $paperlessService->searchDocuments('invoice', true);
// Search in full content
$results = $paperlessService->searchDocuments('invoice', false);
// Get system statistics
$statistics = $paperlessService->getStatistics();
// Get system status
$status = $paperlessService->getStatus();
// Get remote version
$version = $paperlessService->getRemoteVersion();
// Get user profile
$profile = $paperlessService->getProfile();
// Generate auth token
$token = $paperlessService->generateAuthToken();
// Test connection
$isConnected = $paperlessService->testConnection();
if ($isConnected) {
echo "Successfully connected to Paperless-ngx";
} else {
echo "Failed to connect to Paperless-ngx";
}
use Codewithathis\PaperlessNgx\PaperlessService;
use Illuminate\Http\UploadedFile;
class DocumentService
{
public function __construct(private PaperlessService $paperlessService)
{
}
public function processInvoice(UploadedFile $file, array $data)
{
try {
// 1. Upload document
$documentId = $this->paperlessService->uploadDocument($file, [
'title' => $data['title'],
'correspondent' => $data['correspondent_id'],
'document_type' => $data['document_type_id'],
'tags' => $data['tag_ids'],
]);
// 2. Add note
$this->paperlessService->addDocumentNote($documentId, 'Processed automatically');
// 3. Get document details
$document = $this->paperlessService->getDocument($documentId);
return [
'success' => true,
'document_id' => $documentId,
'document' => $document,
];
} catch (Exception $e) {
Log::error('Failed to process invoice', [
'error' => $e->getMessage(),
'file' => $file->getClientOriginalName(),
]);
return [
'success' => false,
'error' => $e->getMessage(),
];
}
}
public function searchInvoices(string $query)
{
$filters = [
'title__icontains' => $query,
'document_type__name__icontains' => 'invoice',
];
return $this->paperlessService->getDocuments($filters);
}
public function bulkTagDocuments(array $documentIds, array $tagIds)
{
return $this->paperlessService->bulkEditDocuments($documentIds, [
'tags' => $tagIds,
]);
}
}
use Codewithathis\PaperlessNgx\PaperlessService;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
class ProcessDocumentJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public function __construct(
private string $filePath,
private array $metadata
) {
}
public function handle(PaperlessService $paperlessService)
{
$file = new UploadedFile($this->filePath, basename($this->filePath));
$documentId = $paperlessService->uploadDocument($file, $this->metadata);
// Process the uploaded document
Log::info('Document uploaded successfully', ['document_id' => $documentId]);
}
}
bash
# Run the test command
php artisan paperless:test
# Test with file upload
php artisan paperless:test --upload=/path/to/test.pdf
# Test search functionality
php artisan paperless:test --search="invoice"
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.