เอาต์พุต TeX ที่ยืดหยุ่นและไดเรกทอรีการทำงานเอาต์พุตใน Java
กำหนดค่าเป้าหมายเอาต์พุตและกลไกการจัดเก็บสำหรับการคอมไพล์เอกสาร TeX และ LaTeX โดยใช้ Aspose.Font สำหรับ Java บันทึกเอกสารที่เรนเดอร์แล้ว (PDF, XPS, SVG, PNG, JPEG, TIFF, BMP) และอาร์ติแฟกต์เสริมจากการคอมไพล์ (.log, .aux) โดยตรงไปยังโฟลเดอร์บนดิสก์จริง ไฟล์ ZIP ที่บีบอัด หรือสตรีมแบบกำหนดเองในหน่วยความจำ โดยไม่จำเป็นต้องติดตั้ง TeX บนเดสก์ท็อป
ระหว่างการคอมไพล์ เอ็นจินการจัดรูปแบบตัวพิมพ์ TeX จะสร้างเอาต์พุตหลักสองประเภท:
- ไฟล์เอาต์พุตหลัก: เอกสารเป้าหมาย (เช่น
.pdf,.xpsหรือชุดลำดับรูปภาพ) - ไฟล์เอาต์พุตเสริม: บันทึก (
.log) ข้อมูลเสริม (.aux) และไฟล์ระดับกลางที่สร้างโดยมาโคร LaTeX
Aspose.TeX สำหรับ Java ห่อหุ้มปลายทางเอาต์พุตไว้ในไดเรกทอรีการทำงานแบบนามธรรมผ่านอินเทอร์เฟซ IOutputWorkingDirectory ซึ่งช่วยให้นักพัฒนาสามารถกำหนดเส้นทางสตรีมเอาต์พุตแบบไดนามิกได้ ประเภทไดเรกทอรีเอาต์พุตที่รองรับ:
- ไดเรกทอรีการทำงานเอาต์พุต ระบบไฟล์ภายในเครื่อง ใช้
OutputFileSystemDirectoryเพื่อบันทึกเอกสารที่เรนเดอร์แล้วและไฟล์บันทึกลงในโฟลเดอร์บนดิสก์ภายในเครื่องโดยตรง - ไดเรกทอรีการทำงานเอาต์พุต ไฟล์ ZIP ใช้
OutputZipDirectoryเพื่อบรรจุเอกสารเอาต์พุต บันทึก และทรัพยากรที่สร้างขึ้นไว้ในไฟล์.zipเดียว - ไดเรกทอรีการทำงานเอาต์พุต สตรีม/หน่วยความจำแบบกำหนดเอง ใช้
IOutputWorkingDirectoryเพื่อบันทึกเอาต์พุตโดยตรงในหน่วยความจำ BLOB ของฐานข้อมูล หรือสตรีมบนคลาวด์ (S3/Azure Blob)
บันทึกเอาต์พุต TeX ไปยังไดเรกทอรีระบบไฟล์ภายในเครื่อง
กำหนดให้เอาต์พุตเอกสารหลักและบันทึกการคอมไพล์เสริมถูกส่งไปยังโฟลเดอร์จริงโดยใช้ OutputFileSystemDirectory
import com.aspose.tex.*;
import java.io.IOException;
public class TeXOutputToFileSystem {
public static void main(String[] args) throws IOException {
// Initialize options for LaTeX format using ObjectTeX
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
// Set input working directory
options.setInputWorkingDirectory(new InputFileSystemDirectory("C:/TeXProject/Input/"));
// Set output working directory for compiled documents and logs
String outputDirPath = "C:/TeXProject/Output/";
options.setOutputWorkingDirectory(new OutputFileSystemDirectory(outputDirPath));
// Execute TeX job producing PDF output
TeXJob job = new TeXJob("main", new PdfDevice(), options);
job.run();
System.out.println("TeX compilation complete. Outputs saved to: " + outputDirPath);
}
}บันทึกเอาต์พุต TeX โดยตรงไปยังไฟล์ ZIP
บรรจุเอกสารที่เรนเดอร์แล้วพร้อมบันทึกระดับกลางและรูปภาพที่สร้างขึ้นไว้ในไฟล์ ZIP ที่บีบอัดโดยใช้ OutputZipDirectory
import com.aspose.tex.*;
import java.io.FileOutputStream;
import java.io.IOException;
public class TeXOutputToZipArchive {
public static void main(String[] args) throws IOException {
// Initialize LaTeX conversion options
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
options.setInputWorkingDirectory(new InputFileSystemDirectory("C:/TeXProject/Input/"));
// Create output stream for destination ZIP file
FileOutputStream zipStream = new FileOutputStream("C:/TeXProject/OutputBundle.zip");
// Set output working directory to ZIP stream
options.setOutputWorkingDirectory(new OutputZipDirectory(zipStream));
// Run job targeting PDF rendering
TeXJob job = new TeXJob("main", new PdfDevice(), options);
job.run();
zipStream.close();
System.out.println("TeX outputs and logs successfully bundled into OutputBundle.zip.");
}
}สตรีมเอาต์พุต TeX ไปยังหน่วยความจำ/ByteArray
สำหรับแอปพลิเคชันบนคลาวด์หรือเว็บ ให้บันทึกเอกสารที่เรนเดอร์แล้วโดยตรงเป็นสตรีมไบต์โดยไม่ต้องเขียนไฟล์ลงในพื้นที่จัดเก็บบนดิสก์ภายในเครื่อง
import com.aspose.tex.*;
import java.io.ByteArrayOutputStream;
public class TeXOutputToMemoryStream {
public static void main(String[] args) throws Exception {
// Configure conversion options
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
options.setInputWorkingDirectory(new InputFileSystemDirectory("C:/TeXProject/Input/"));
// Initialize memory output stream device
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
// Configure output working directory for log/auxiliary files
options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Logs/"));
// Run compilation directing PDF output to byte array stream
TeXJob job = new TeXJob("main", new PdfDevice(outputStream), options);
job.run();
byte[] pdfBytes = outputStream.toByteArray();
System.out.println("Generated PDF size in memory: " + pdfBytes.length + " bytes.");
}
}การติดตั้งและการตั้งค่า
ผสานรวม Aspose.TeX สำหรับ 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. อุปกรณ์เอาต์พุตปลายทางใดบ้างที่รองรับใน Aspose.TeX for Java?
Aspose.TeX รองรับอุปกรณ์เอาต์พุตหลายประเภท ได้แก่ PdfDevice (เอกสาร PDF), XpsDevice (เอกสาร XPS), SvgDevice (กราฟิกเวกเตอร์แบบปรับขนาดได้) และ ImageDevice (ภาพแรสเตอร์ เช่น PNG, JPEG, TIFF และ BMP)
2. ไฟล์การคอมไพล์เสริม (.log, .aux) ถูกบันทึกไว้ที่ใด?
ไฟล์เสริมจะถูกเขียนไปยังไดเรกทอรีที่ระบุใน TeXOptions.setOutputWorkingDirectory() หากใช้ OutputZipDirectory ไฟล์ .log และ .aux จะถูกบรรจุโดยตรงไว้ภายในไฟล์ ZIP พร้อมกับเอกสารที่เรนเดอร์แล้ว
3. สามารถระงับหรือเปลี่ยนเส้นทางไฟล์เอาต์พุตของบันทึกได้หรือไม่?
ได้ คุณสามารถปรับแต่งการจัดการเอาต์พุตของเทอร์มินัล/บันทึกผ่าน TeXOptions.setTerminalOut() หรือกำหนด implementation แบบกำหนดเองของ IOutputWorkingDirectory เพื่อทิ้งหรือเปลี่ยนเส้นทางบันทึกการคอมไพล์ได้