\ai{pdf-generation}

توليد ملفات PDF بالذكاء الاصطناعي عبر LLM

استخدم GPT-4 أو Claude أو أي LLM لتوليد شيفرة LaTeX المصدرية، ثم جمّعها إلى ملف PDF احترافي عبر FormaTeX API. استدعاءان لواجهة API، وأنواع مستندات غير محدودة، ومخرجات دقيقة إلى أدق بكسل.

\section{النمط}

LLM يولّد LaTeX، وFormaTeX يجمّعه

النمط بسيط: اطلب من LLM إنتاج شيفرة LaTeX المصدرية الخام، ثم أرسلها بطلب POST إلى نقطة نهاية التجميع في FormaTeX. يتولى LLM بنية المستند ومحتواه، بينما يتولى FormaTeX خط معالجة التجميع الكامل في TeX Live. تحصل على ملف PDF بجودة إنتاجية دون إدارة تثبيت LaTeX بنفسك.

LLM يكتب LaTeX

تنتج نماذج LLM الحديثة شيفرة LaTeX سليمة نحويًا بصورة موثوقة، خاصة مع موجّه نظام مركّز. تعمل GPT-4o وClaude Opus وGemini Pro جميعها بشكل جيد.

FormaTeX يجمّع

POST the LaTeX string to https://api.formatex.io/api/v1/compile with your API key. Choose the engine: pdflatex and xelatex on every plan, lualatex and latexmk on Pro and above. Receive raw PDF bytes in the response.

احفظ ملف PDF أو مرّره كتدفق

اكتب بايتات الاستجابة في ملف، أو مرّرها كتدفق إلى تنزيل في المتصفح، أو ارفعها إلى التخزين السحابي، بحسب ما يتطلبه سير عملك.

\section{LaTeX مقابل HTML}

لماذا يتفوق LaTeX على تحويل HTML إلى PDF في مخرجات الذكاء الاصطناعي

المعيارLaTeX + FormaTeXHTML إلى PDF
الرياضياتعرض أصلي للمعادلات عبر amsmathحل بديل عبر MathJax، وخطوط غير متسقة
الطباعةتقسيم أسطر Knuth–Plass وتباعد حروف احترافيعرض بجودة المتصفح، متغيّر
تخطيط الصفحةهوامش وترويسات وتذييلات دقيقة، وأعمدة متعددةتقريب عبر CSS، وخصوصيات في الطباعة
Cross-references\ref, \cite, \label — automatic numberingيدوي أو هش يعتمد على JS
المستندات الطويلةفصول وأقسام وفهرس محتويات وقائمة مراجعيصعب إدارتها على نطاق واسع
موثوقية LLMتنتج نماذج LLM شيفرة LaTeX صالحة بثبات أكبرتنتج نماذج LLM شيفرة CSS مضمّنة غير متسقة

\section{مثال بلغة Python}

GPT-4 + FormaTeX في Python

مثال كامل وقابل للتشغيل باستخدام OpenAI Python SDK ومكتبة requests. استدعِ generate_pdf() بأي طلب بلغة طبيعية لتحصل على ملف .pdf على القرص.

ai_pdf_generation.py
import openai
import requests

openai_client = openai.OpenAI(api_key="your-openai-key")
FORMATEX_URL = "https://api.formatex.io/api/v1/compile"
FORMATEX_API_KEY = "your-formatex-key"

SYSTEM_PROMPT = """You are a LaTeX expert. When asked to create a document,
respond ONLY with valid LaTeX source code. No markdown fences, no explanation.
Always include \\documentclass, a complete preamble, and
\\begin{document}...\\end{document}. Use standard packages only."""

def generate_latex(prompt: str) -> str:
    """Ask GPT-4 to write a complete LaTeX document."""
    response = openai_client.chat.completions.create(
        model="gpt-4o",
        messages=[
            {"role": "system", "content": SYSTEM_PROMPT},
            {"role": "user", "content": prompt},
        ],
        temperature=0.2,  # Low temperature for deterministic LaTeX output
    )
    return response.choices[0].message.content

def compile_to_pdf(latex_source: str, engine: str = "pdflatex") -> bytes:
    """Compile LaTeX source with FormaTeX and return PDF bytes."""
    response = requests.post(
        FORMATEX_URL,
        headers={
            "X-API-Key": FORMATEX_API_KEY,
            "Content-Type": "application/json",
        },
        json={"latex": latex_source, "engine": engine},
        timeout=30,
    )
    response.raise_for_status()
    return response.content

def generate_pdf(prompt: str, output_path: str, engine: str = "pdflatex") -> None:
    """End-to-end: prompt → LaTeX → PDF saved to disk."""
    print(f"Generating LaTeX for: {prompt[:60]}...")
    latex_source = generate_latex(prompt)

    print("Compiling PDF with FormaTeX...")
    pdf_bytes = compile_to_pdf(latex_source, engine)

    with open(output_path, "wb") as f:
        f.write(pdf_bytes)
    print(f"PDF saved to {output_path} ({len(pdf_bytes):,} bytes)")


# Example usage
generate_pdf(
    prompt=(
        "Write a 3-page LaTeX technical report on transformer neural networks. "
        "Include an abstract, introduction, the scaled dot-product attention "
        "equation, a comparison table of model sizes, and a conclusion."
    ),
    output_path="transformer_report.pdf",
    engine="pdflatex",
)

\section{نصائح للطلبات}

هندسة الطلبات للحصول على LaTeX موثوق

فرض LaTeX الخام في موجّه النظام

أضف إلى رسالة النظام عبارة "respond ONLY with valid LaTeX source code — no markdown fences, no explanation". بدونها تغلّف النماذج المخرجات غالبًا داخل كتل ```latex يجب إزالتها.

حدّد فئة المستند صراحةً

Tell the model which documentclass to use: "Use \documentclass{article}" or "\documentclass[12pt,a4paper]{report}". This prevents the model from choosing an inappropriate class.

أبقِ درجة الحرارة منخفضة

اضبط temperature بين 0.1 و0.3 عند توليد LaTeX. ترفع الحرارة العالية احتمال ظهور أوامر مختلقة أو أقواس ناقصة تُفشل التجميع.

اذكر الحزم التي تحتاجها

أخبر النموذج صراحةً بالحزم التي يجب تضمينها: amsmath وgraphicx وbooktabs وhyperref. تستورد النماذج أحيانًا حزمًا غير موجودة عندما تُترك للاختيار الحر.

تحقق قبل التجميع

Strip markdown fences with a simple regex before POSTing. Check that the output contains \documentclass and \begin{document} — if not, re-prompt rather than wasting a compile request.

استخدم xelatex للمحتوى بترميز Unicode

If the document may contain non-ASCII characters (names, accents, CJK), set engine to xelatex and instruct the model to use \usepackage{fontspec} instead of inputenc.

\end{pdf-generation}

ابدأ توليد ملفات PDF بالذكاء الاصطناعي

احصل على مفتاح FormaTeX API، وانسخ مثال Python أعلاه، وأطلق ملفات PDF احترافية مولّدة بالذكاء الاصطناعي في أقل من عشر دقائق.