# تعليمات تثبيت مكتبة قراءة PDF

## الطريقة الأولى: استخدام Composer (موصى به)

### 1. تثبيت Composer
إذا لم يكن Composer مثبتاً، قم بتثبيته:

**على Windows:**
- حمّل المثبت من: https://getcomposer.org/Composer-Setup.exe
- قم بتشغيل المثبت واتبع التعليمات

**على Linux/Mac:**
```bash
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
```

### 2. تثبيت مكتبة smalot/pdfparser
افتح Terminal/CMD في مجلد المشروع `C:\xampp\htdocs\00` ونفذ:

```bash
composer require smalot/pdfparser
```

### 3. تفعيل المكتبة في الكود
الكود جاهز للاستخدام! المكتبة ستعمل تلقائياً عند رفع PDF.

---

## الطريقة الثانية: استخدام pdftotext (بديل)

### على Windows:
1. حمّل Xpdf tools من: https://www.xpdfreader.com/download.html
2. فك الضغط في مجلد مثل `C:\xpdf`
3. أضف المجلد إلى متغيرات البيئة PATH:
   - ابحث عن "Edit the system environment variables"
   - اضغط "Environment Variables"
   - في "System variables" اختر "Path" ثم "Edit"
   - أضف المسار: `C:\xpdf\bin64`

### على Linux (Ubuntu/Debian):
```bash
sudo apt-get update
sudo apt-get install poppler-utils
```

### على Mac:
```bash
brew install poppler
```

### تأكد من التثبيت:
```bash
pdftotext -v
```

---

## اختبار المكتبة

### اختبار سريع:
قم بإنشاء ملف `test_pdf.php` في مجلد `users/office/contracts/`:

```php
<?php
// اختبار مكتبة smalot/pdfparser
require_once __DIR__ . '/../../../vendor/autoload.php';

$parser = new \Smalot\PdfParser\Parser();

try {
    // استبدل بمسار ملف PDF اختباري
    $pdf = $parser->parseFile('test_contract.pdf');
    $text = $pdf->getText();
    
    echo "<h2>تم قراءة PDF بنجاح!</h2>";
    echo "<pre>" . htmlspecialchars($text) . "</pre>";
    
} catch (Exception $e) {
    echo "خطأ: " . $e->getMessage();
}
?>
```

ثم افتح: `http://localhost/0f/users/office/contracts/test_pdf.php`

---

## حل المشاكل الشائعة

### المشكلة: "Class not found"
**الحل:**
تأكد من تشغيل `composer install` أو `composer require smalot/pdfparser`

### المشكلة: ملف PDF غير قابل للقراءة (صورة ممسوحة)
**الحل:**
تحتاج إلى مكتبة OCR مثل Tesseract:

**تثبيت Tesseract:**
```bash
# Ubuntu/Debian
sudo apt-get install tesseract-ocr tesseract-ocr-ara

# Windows
# حمّل من: https://github.com/UB-Mannheim/tesseract/wiki
```

**استخدام Tesseract في PHP:**
```php
// تحويل PDF إلى صورة ثم OCR
exec("convert -density 300 contract.pdf -depth 8 -strip -background white -alpha off contract.png");
exec("tesseract contract.png output -l ara", $output);
$text = file_get_contents('output.txt');
```

### المشكلة: النص العربي معكوس أو مشوه
**الحل:**
1. تأكد من ترميز UTF-8 في ملفات PHP:
```php
header('Content-Type: text/html; charset=utf-8');
```

2. استخدم دالة تنظيف النص:
```php
function cleanArabicText($text) {
    // إزالة الأحرف الخاصة
    $text = preg_replace('/[\x{200B}-\x{200D}\x{FEFF}]/u', '', $text);
    // تصحيح الاتجاه
    return $text;
}
```

---

## أداء وتحسين

### للملفات الكبيرة:
قم بزيادة حدود PHP في `php.ini` أو في بداية الملف:

```php
ini_set('memory_limit', '256M');
ini_set('max_execution_time', '120');
ini_set('upload_max_filesize', '10M');
ini_set('post_max_size', '10M');
```

### استخدام Queue للمعالجة:
للملفات الكبيرة جداً، فكر في معالجة غير متزامنة:

```php
// حفظ المهمة في جدول queue
$stmt = $connect->prepare("
    INSERT INTO pdf_processing_queue (file_path, status, created_at) 
    VALUES (?, 'pending', NOW())
");
$stmt->execute([$filePath]);

// معالجة لاحقاً عبر cron job
```

---

## دعم اللغة العربية

تأكد من أن جدول `zxcontract` يستخدم charset صحيح:

```sql
ALTER TABLE zxcontract CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```

---

## التحديثات المستقبلية

### دعم صيغ إضافية:
```bash
# لدعم Word documents
composer require phpoffice/phpword

# لدعم الصور مع OCR
composer require thiagoalessio/tesseract_ocr
```

---

## الموارد والمراجع

- **smalot/pdfparser Documentation:** https://github.com/smalot/pdfparser
- **Poppler Utils:** https://poppler.freedesktop.org/
- **Tesseract OCR:** https://github.com/tesseract-ocr/tesseract
- **Composer:** https://getcomposer.org/

---

## الدعم

في حالة وجود مشاكل:
1. تحقق من error_log في `C:\xampp\apache\logs\error.log`
2. فعّل error reporting في PHP:
```php
error_reporting(E_ALL);
ini_set('display_errors', 1);
```
3. راجع `PDF_IMPORT_README.md` للتفاصيل الكاملة

