\usepackage{php}

واجهة API لتحويل LaTeX إلى PDF بلغة PHP

جمّع LaTeX إلى PDF من PHP بطلب HTTP واحد. استخدم امتداد cURL المدمج في PHP العادية أو واجهة Http::post في Laravel، دون الحاجة إلى تثبيت أي SDK.

Also available in:Python·Node.js·Go·PHP·Ruby·Rust·cURL|Full API reference

\section{بداية سريعة}

بداية سريعة

يستخدم المثال أدناه الدالة المدمجة curl_init في PHP لتجميع مستند LaTeX بسيط وكتابة ملف PDF الناتج على القرص. لا حاجة إلى أي حزم Composer.

compile.php
<?php

$apiKey = getenv('FORMATEX_API_KEY');
$apiUrl = 'https://api.formatex.io/api/v1';

$latexSource = <<<'LATEX'
\documentclass{article}
\usepackage{amsmath}
\begin{document}
Hello from PHP! $E = mc^2$
\end{document}
LATEX;

$ch = curl_init($apiUrl . '/compile');
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => [
        'X-API-Key: ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'latex' => $latexSource,
        'engine' => 'pdflatex',
    ]),
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($httpCode !== 200) {
    $error = json_decode($response, true);
    throw new RuntimeException('Compilation failed: ' . $error['error']);
}

file_put_contents('output.pdf', $response);
echo "PDF saved to output.pdf\n";

\section{Laravel}

التكامل مع Laravel

استخدم واجهة Http في Laravel لاستدعاء FormaTeX API من متحكم (controller). يبثّ المثال أدناه ملف PDF مباشرة إلى المتصفح كتنزيل.

app/Http/Controllers/PdfController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Http;

class PdfController extends Controller
{
    public function generate(Request $request): Response
    {
        $request->validate([
            'source' => 'required|string',
            'engine' => 'in:pdflatex,xelatex,lualatex,latexmk',
        ]);

        $response = Http::withHeaders([
            'X-API-Key' => config('services.formatex.key'),
        ])->post('https://api.formatex.io/api/v1/compile', [
            'latex'  => $request->input('source'),
            'engine' => $request->input('engine', 'pdflatex'),
        ]);

        if (!$response->successful()) {
            return response()->json([
                'error' => $response->json('error'),
            ], 500);
        }

        return response($response->body(), 200, [
            'Content-Type'        => 'application/pdf',
            'Content-Disposition' => 'attachment; filename=output.pdf',
        ]);
    }
}

\section{Authentication}

إعداد متغير البيئة

احتفظ بمفتاح API في متغير بيئة واقرأه أثناء التشغيل. لا تكتب المفاتيح أبدًا داخل ملفات المصدر.

PHP العادية

$apiKey = getenv( 'FORMATEX_API_KEY' );

Laravel (.env + config)

# .env FORMATEX_API_KEY =your-api-key # config/services.php 'formatex' => ['key' => env('FORMATEX_API_KEY')],
  • → أنشئ مفاتيح API من لوحة التحكم بعد التسجيل.
  • → تُعرض المفاتيح مرة واحدة عند إنشائها وتُخزَّن كقيم مُجزّأة (hash)، لذا احفظ مفتاحك فورًا.

\section{Engines}

اختيار المحرك

مرّر الحقل engine في جسم JSON. احذفه لاستخدام المحرك الافتراضي pdflatex.

pdflatexالأسرع. الأنسب للمستندات القياسية.
xelatexدعم Unicode وخطوط النظام.
lualatexبرمجة Lua وطباعة متقدمة.
latexmkيشغّل التمريرات تلقائيًا للمراجع وفهرس المحتويات.

راجع توثيق المحركات لمقارنة كاملة.

\section{Reference}

مرجع API

الحقلالنوعمطلوبالوصف
latexstringنعمكود LaTeX المصدري الكامل كسلسلة نصية
enginestringلاالمحرك المراد استخدامه. الافتراضي: "pdflatex". الخيارات: pdflatex وxelatex وlualatex وlatexmk

POST https://api.formatex.io/api/v1/compile — يعيد بايتات PDF الخام عند النجاح ( 200)، أو خطأ بصيغة JSON عند الفشل ( 422/ 401).

\end{php}

ابدأ تجميع LaTeX من PHP

احصل على مفتاح API، وشغّل البداية السريعة، واحصل على ملف PDF خلال دقائق، دون الحاجة إلى حزم Composer.