مدخلات 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 النشط.