การฝังกราฟิกในเอกสาร LaTeX โดยใช้ Java
ฝังภาพแรสเตอร์ความละเอียดสูง (PNG, JPEG, BMP) และภาพเวกเตอร์ (EPS, PDF) ลงในเอกสาร LaTeX โดยใช้ Aspose.TeX for Java ด้วยการใช้แพ็กเกจ LaTeX ดั้งเดิม เช่น graphicx และการกำหนดค่าไดเรกทอรีทำงานสำหรับอินพุต นักพัฒนาสามารถคอมไพล์เอกสารที่มีแผนภูมิ รูปภาพ ภาพถ่าย และกราฟิกเวกเตอร์ที่ฝังอยู่ได้อย่างราบรื่น และสร้างเอาต์พุต PDF, XPS และรูปภาพที่พร้อมสำหรับการเผยแพร่
เมื่อคอมไพล์เอกสาร LaTeX ที่มีองค์ประกอบกราฟิก Aspose.TeX for Java จะค้นหาไฟล์รูปภาพที่อ้างอิงโดยสัมพันธ์กับ IInputWorkingDirectory ที่กำหนดค่าไว้
- สำหรับภาพถ่าย ภาพหน้าจอแบบแรสเตอร์ และกราฟิกบนเว็บ ให้เลือกรูปแบบ PNG/JPEG ที่ฝังโดยใช้คำสั่ง
\usepackage{graphicx}-\includegraphics{figure.png} - สำหรับไดอะแกรมเวกเตอร์ความแม่นยำสูงและกราฟ CAD/วิทยาศาสตร์ ให้เลือกรูปแบบ EPS ที่ฝังโดยใช้คำสั่ง
\usepackage{graphicx}-\includegraphics{diagram.eps} - สำหรับการฝังภาพบิตแมปแบบเก่า ให้เลือกรูปแบบ BMP/TIFF ที่ฝังโดยใช้คำสั่ง
\usepackage{graphicx}-\includegraphics{image.bmp}
การฝังภาพแรสเตอร์ (PNG/JPEG) ใน LaTeX
หากต้องการฝังภาพแรสเตอร์มาตรฐาน ให้เพิ่มแพ็กเกจ graphicx ในส่วนคำนำของเอกสาร LaTeX และระบุชื่อไฟล์ภาพเป้าหมายใน \includegraphics{}
import com.aspose.tex.*;
import java.io.ByteArrayInputStream;
import java.nio.charset.StandardCharsets;
public class EmbedRasterGraphicsInLaTeX {
public static void main(String[] args) throws Exception {
// Create LaTeX document string referencing an image file 'sample.png'
String latexCode = "\\documentclass{article}\n" +
"\\usepackage{graphicx}\n" +
"\\begin{document}\n" +
"\\section{Graphics Rendering Demo}\n" +
"Here is an embedded raster image:\n\n" +
"\\begin{figure}[h]\n" +
" \\centering\n" +
" \\includegraphics[width=0.5\\textwidth]{sample.png}\n" +
" \\caption{Sample PNG Image in LaTeX}\n" +
"\\end{figure}\n" +
"\\end{document}";
ByteArrayInputStream inputStream = new ByteArrayInputStream(latexCode.getBytes(StandardCharsets.UTF_8));
// Initialize conversion options for ObjectLaTeX
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
// Set input working directory where 'sample.png' is located
options.setInputWorkingDirectory(new InputFileSystemDirectory("C:/TeXProject/Images/"));
// Set output working directory for compiled PDF
options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));
// Execute TeX job
TeXJob job = new TeXJob(inputStream, new PdfDevice(), options);
job.run();
System.out.println("LaTeX document with embedded PNG successfully compiled to PDF.");
}
}การฝังกราฟิกเวกเตอร์ (EPS) ใน LaTeX
Aspose.TeX ประมวลผลกราฟิก Encapsulated PostScript (.eps) โดยตรงเมื่อคอมไพล์ผ่านเอนจินรูปแบบ ObjectLaTeX
import com.aspose.tex.*;
import java.io.IOException;
public class EmbedEPSGraphicsInLaTeX {
public static void main(String[] args) throws IOException {
// Initialize options for LaTeX format engine
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
// Configure directory paths containing .tex source and .eps graphics
options.setInputWorkingDirectory(new InputFileSystemDirectory("C:/TeXProject/SourceWithEPS/"));
options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));
// Run job for 'document_with_eps.tex' containing \includegraphics{vector_chart.eps}
TeXJob job = new TeXJob("document_with_eps", new PdfDevice(), options);
job.run();
System.out.println("LaTeX document with vector EPS figure compiled successfully.");
}
}การโหลดทรัพยากรกราฟิกจากไฟล์ ZIP
รวมไฟล์ต้นฉบับ TeX แพ็กเกจมาโคร และรูปภาพแบบไดนามิกไว้ในไฟล์เก็บถาวร .zip เดียวกัน และกำหนดค่าให้ Aspose.TeX แก้ไขการอ้างอิงกราฟิกโดยตรงจากหน่วยความจำหรือพื้นที่จัดเก็บข้อมูลแบบบีบอัด
import com.aspose.tex.*;
import java.io.FileInputStream;
public class EmbedGraphicsFromZip {
public static void main(String[] args) throws Exception {
// Initialize LaTeX engine options
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
// Open input ZIP archive containing 'main.tex' and 'figure.png'
FileInputStream zipStream = new FileInputStream("C:/TeXProject/ProjectWithAssets.zip");
options.setInputWorkingDirectory(new InputZipDirectory(zipStream, "src"));
// Define output destination
options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));
// Run compilation job
TeXJob job = new TeXJob("main", new PdfDevice(), options);
job.run();
zipStream.close();
System.out.println("Compiled LaTeX document with images embedded directly from ZIP file.");
}
}การติดตั้งและการตั้งค่า
ผสานรวม 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. จะเกิดอะไรขึ้นหากไม่ได้ระบุชื่อ job ใน TeXOptions?
หากไม่ได้กำหนดชื่อ job อย่างชัดเจนผ่าน setJobName() Aspose.TeX จะใช้ชื่อไฟล์อินพุตหลักเป็นค่าเริ่มต้น (เช่น main.tex จะสร้าง main.pdf และ main.log)
2. จะปิดใช้งานการสร้างไฟล์คอมไพล์ .log โดยสมบูรณ์ได้อย่างไร?
ตั้งค่า options.setLogOutput(false) ก่อนสร้างและเรียกใช้ TeXJob ซึ่งจะป้องกันไม่ให้เอนจินสร้างไฟล์บันทึกเสริมบนดิสก์หรือในไดเรกทอรีทำงานเอาต์พุต
3. สามารถจับข้อความเทอร์มินัล TeX ในสภาพแวดล้อมเซิร์ฟเวอร์/headless ได้หรือไม่?
ได้ การกำหนด OutputMemoryTerminal แบบกำหนดเองหรือการ implement IOutputTerminal ช่วยให้คุณสามารถส่งข้อความ stdout/stderr ทั้งหมดจากเทอร์มินัลไปยังระบบบันทึกขององค์กรบนเซิร์ฟเวอร์ของคุณ (เช่น Log4j หรือ SLF4J)