مدخلات TeX وأدلة العمل المرنة في Java

قم بتكوين مصادر الإدخال وأدلة العمل لنظام الملفات الافتراضي لتجميع مستندات TeX وLaTeX باستخدام Aspose.TeX for Java. مرّر ملفات TeX المصدر وحزم TeX ووحدات الماكرو والصور المضمّنة مباشرةً من أنظمة الملفات المحلية أو أرشيفات ZIP المضغوطة أو التدفقات المخصّصة الموجودة في الذاكرة، دون الحاجة إلى تثبيت توزيعات TeX لسطح المكتب (مثل MiKTeX أو TeX Live).

 

عند تجميع مستندات TeX أو LaTeX، يحتاج المحرك إلى الوصول إلى الملفات المصدر الرئيسية (.tex)، والملفات الفرعية المشار إليها (\input{} أو \include)، والأنماط (.sty)، والفئات (.cls)، والخطوط، والصور.

يقسم Aspose.TeX for Java مصادر إدخال TeX إلى أدلة عمل مجردة يتم تمثيلها بواسطة الواجهة IInputWorkingDirectory:

  • دليل عمل الإدخال نظام الملفات المحلي يستخدم InputFileSystemDirectory لقراءة ملفات مصدر TeX والأصول مباشرةً من مجلدات القرص.
  • دليل عمل الإدخال أرشيف ZIP يستخدم InputZipDirectory لقراءة تجميع TeX المضمّن بالكامل، حيث يتم تخزين جميع التبعيات (.tex، .sty، الصور) في ملف .zip واحد.
  • دليل عمل الإدخال تدفق/ذاكرة مخصّصة يستخدم IInputWorkingDirector لقراءة أنظمة الملفات الافتراضية أو مدخلات BLOB من قواعد البيانات أو تدفقات التخزين السحابي (S3/Azure Blob)."

تحميل إدخال TeX من دليل في نظام الملفات المحلي

حدّد مجلدًا فعليًا على القرص باعتباره دليل عمل الإدخال لمحرك TeX باستخدام InputFileSystemDirectory.

import com.aspose.tex.*;
import java.io.IOException;

public class TeXInputFromFileSystem {
    public static void main(String[] args) throws IOException {
        // Create TeX options for LaTeX format using ObjectTeX engine
        TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

        // Set the input working directory to a local file folder
        String inputDirPath = "C:/TeXProject/Input/";
        options.setInputWorkingDirectory(new InputFileSystemDirectory(inputDirPath));

        // Set output working directory for compiled results (PDF/XPS/Images)
        String outputDirPath = "C:/TeXProject/Output/";
        options.setOutputWorkingDirectory(new OutputFileSystemDirectory(outputDirPath));

        // Run TeX compilation for 'main.tex'
        TeXJob job = new TeXJob("main", new PdfDevice(), options);
        job.run();

        System.out.println("TeX compilation from local directory completed successfully.");
    }
}

تحميل إدخال TeX من أرشيف ZIP

قم بتجميع حزم TeX المستقلة مباشرةً من ملف .zip دون فك ضغطها إلى القرص باستخدام InputZipDirectory.

import com.aspose.tex.*;
import java.io.FileInputStream;
import java.io.IOException;

public class TeXInputFromZipArchive {
    public static void main(String[] args) throws IOException {
        // Initialize LaTeX conversion options
        TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

        // Open input ZIP stream containing main.tex, packages, and assets
        FileInputStream zipStream = new FileInputStream("C:/TeXProject/ProjectBundle.zip");

        // Set input working directory to the ZIP archive stream
        options.setInputWorkingDirectory(new InputZipDirectory(zipStream, "subfolder_inside_zip"));

        // Define output directory on disk
        options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));

        // Execute TeX job referencing 'main.tex' inside the ZIP
        TeXJob job = new TeXJob("main", new PdfDevice(), options);
        job.run();

        zipStream.close();
        System.out.println("TeX compilation directly from ZIP archive completed.");
    }
}

تمرير مصدر TeX عبر تدفق الذاكرة

لإنشاء LaTeX بشكل ديناميكي (مثل التقارير المعروضة على الخادم أو العرض الديناميكي للمعادلات)، مرّر محتوى السلسلة النصية الخام أو التدفقات مباشرةً إلى TeXJob.

import com.aspose.tex.*;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;

public class TeXInputFromMemoryStream {
    public static void main(String[] args) throws Exception {
        // Create dynamic LaTeX content string
        String latexCode = "\\documentclass{article}\n" +
                           "\\begin{document}\n" +
                           "\\section{Dynamic Report}\n" +
                           "Hello World from Aspose.TeX for Java!\n" +
                           "\\end{document}";

        InputStream inputSteam = new ByteArrayInputStream(latexCode.getBytes(StandardCharsets.UTF_8));

        // Configure options
        TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
        options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));

        // Run job passing stream directly
        TeXJob job = new TeXJob(inputSteam, new PdfDevice(), options);
        job.run();

        System.out.println("Dynamic LaTeX stream successfully compiled to PDF.");
    }
}

التثبيت والإعداد

قم بدمج Aspose.TeX for Java في مشروعك باستخدام Maven:

Package Manager Console Command

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-tex</artifactId>
    <version>Latest</version>
</dependency>

الأسئلة الشائعة

1. هل أحتاج إلى تثبيت MiKTeX أو TeX Live أو ملفات تنفيذية خارجية؟

لا. Aspose.TeX for Java هو محرك Java مستقل تمامًا ينفذ تحليل TeX/LaTeX، وتنسيق النصوص، والعرض بشكل أصلي، دون الحاجة إلى ملفات تنفيذية أصلية خارجية.

2. هل يمكنني مزج مصادر إدخال مختلفة للملفات الرئيسية والرسومات/الأنماط الخارجية؟

نعم. يمكنك تعيين InputWorkingDirectory أساسي (مثل InputZipDirectory) وتهيئة مسارات البحث الإضافية للحزم والخطوط باستخدام إعدادات التكوين TeXOptions.

3. كيف يتعامل Aspose.TeX مع المسارات النسبية في وحدات الماكرو \input{} أو \includegraphics{}؟

يتم حل المسارات النسبية المحددة داخل مستندات LaTeX تلقائيًا بالنسبة إلى الجذر المحدد بواسطة مثيل IInputWorkingDirectory النشط.