อินพุต TeX และไดเรกทอรีทำงานที่ยืดหยุ่นใน Java
กำหนดค่าแหล่งอินพุตและไดเรกทอรีทำงานของระบบไฟล์เสมือนสำหรับการคอมไพล์เอกสาร TeX และ LaTeX โดยใช้ Aspose.TeX for Java ส่งไฟล์ต้นฉบับ 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>
FAQ
1. จำเป็นต้องติดตั้ง MiKTeX, TeX Live หรือไบนารีที่สามารถเรียกใช้งานได้จากภายนอกหรือไม่?
ไม่จำเป็น Aspose.TeX for Java เป็นเอนจิน Java แบบสแตนด์อโลนอย่างสมบูรณ์ ซึ่งดำเนินการวิเคราะห์ การจัดเรียงข้อความ และการเรนเดอร์ TeX/LaTeX โดยตรงโดยไม่ต้องใช้ไฟล์ปฏิบัติการแบบ native จากภายนอก
2. สามารถผสมแหล่งอินพุตที่แตกต่างกันสำหรับไฟล์หลักและกราฟิก/สไตล์ภายนอกได้หรือไม่?
ได้ คุณสามารถตั้งค่า InputWorkingDirectory หลัก (เช่น InputZipDirectory) และกำหนดค่าเส้นทางการค้นหาแพ็กเกจ/ฟอนต์เพิ่มเติมโดยใช้การตั้งค่าคอนฟิกของ TeXOptions
3. Aspose.TeX จัดการเส้นทางแบบสัมพัทธ์ในแมโคร \input{} หรือ \includegraphics{} อย่างไร?
เส้นทางแบบสัมพัทธ์ที่กำหนดไว้ภายในเอกสาร LaTeX จะถูกแก้ไขโดยอัตโนมัติโดยอ้างอิงจากรูทที่ระบุโดยอินสแตนซ์ IInputWorkingDirectory ที่ใช้งานอยู่