Встраивание графики в документы 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. Что произойдёт, если не указать имя задания в TeXOptions?
Если имя задания явно не настроено через setJobName(), Aspose.TeX по умолчанию использует имя основного входного файла (например, main.tex создаёт main.pdf и main.log).
2. Как полностью отключить создание файла компиляции .log?
Установите options.setLogOutput(false) перед созданием и запуском TeXJob. Это предотвращает создание механизмом вспомогательных файлов журналов на диске или в выходном рабочем каталоге.
3. Можно ли перехватывать сообщения терминала TeX в серверных/headless-средах?
Да. Назначение пользовательского OutputMemoryTerminal или реализация IOutputTerminal позволяет перенаправлять все сообщения stdout/stderr терминала в корпоративную систему журналирования сервера (например, Log4j или SLF4J).