Вбудовування графіки в документи 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).