Menyematkan grafik dalam dokumen LaTeX menggunakan Java

Sisipkan gambar raster beresolusi tinggi (PNG, JPEG, BMP) dan gambar vektor (EPS, PDF) ke dalam dokumen LaTeX menggunakan Aspose.TeX for Java. Dengan memanfaatkan paket LaTeX native seperti graphicx dan mengonfigurasi direktori kerja input, pengembang dapat mengompilasi dokumen yang berisi bagan, gambar, foto, dan grafik vektor yang disematkan secara lancar menjadi output PDF, XPS, dan gambar yang siap dipublikasikan.

 

Saat mengompilasi dokumen LaTeX yang berisi elemen grafis, Aspose.TeX for Java menyelesaikan file gambar yang direferensikan relatif terhadap IInputWorkingDirectory yang dikonfigurasi.

  • Untuk foto, tangkapan layar raster, dan grafik web, pilih format PNG/JPEG yang disematkan menggunakan perintah \usepackage{graphicx} - \includegraphics{figure.png}.
  • Untuk diagram vektor presisi tinggi dan grafik CAD/ilmiah, pilih format EPS yang disematkan menggunakan perintah \usepackage{graphicx} - \includegraphics{diagram.eps}.
  • Untuk penyematan gambar bitmap lama, pilih format BMP/TIFF yang disematkan menggunakan perintah \usepackage{graphicx} - \includegraphics{image.bmp}.

Menyematkan gambar raster (PNG/JPEG) dalam LaTeX

Untuk menyematkan gambar raster standar, sertakan paket graphicx dalam preamble dokumen LaTeX Anda dan tentukan nama file gambar target dalam \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.");
    }
}

Menyematkan grafik vektor (EPS) dalam LaTeX

Aspose.TeX memproses grafik Encapsulated PostScript (.eps) secara native saat melakukan kompilasi melalui mesin format 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.");
    }
}

Memuat aset grafik dari arsip ZIP

Kemas file sumber TeX, paket makro, dan gambar dinamis bersama-sama dalam arsip .zip, lalu arahkan Aspose.TeX untuk menyelesaikan dependensi grafik secara langsung dari memori atau penyimpanan terkompresi.

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.");
    }
}

Instalasi dan Pengaturan

Integrasikan Aspose.TeX for Java ke dalam proyek Anda menggunakan 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>

Pertanyaan yang Sering Diajukan

1. Apa yang terjadi jika saya tidak menentukan nama pekerjaan di TeXOptions?

Jika nama pekerjaan tidak dikonfigurasi secara eksplisit melalui setJobName(), Aspose.TeX secara default menggunakan nama file input utama (misalnya, main.tex menghasilkan main.pdf dan main.log).

2. Bagaimana cara menonaktifkan sepenuhnya pembuatan file kompilasi .log?

Atur options.setLogOutput(false) sebelum membuat dan menjalankan TeXJob. Ini mencegah mesin menghasilkan file log tambahan di disk atau di direktori kerja output.

3. Bisakah saya menangkap pesan terminal TeX di lingkungan server/headless?

Ya. Dengan menetapkan OutputMemoryTerminal khusus atau mengimplementasikan IOutputTerminal, Anda dapat mengarahkan semua pesan stdout/stderr terminal ke sistem logging perusahaan di server Anda (misalnya, Log4j atau SLF4J).