Java kullanarak LaTeX belgelerine grafik ekleme

Aspose.TeX for Java kullanarak yüksek çözünürlüklü raster görüntüleri (PNG, JPEG, BMP) ve vektör şekillerini (EPS, PDF) LaTeX belgelerine ekleyin. graphicx gibi yerel LaTeX paketlerinden yararlanarak ve giriş çalışma dizinlerini yapılandırarak geliştiriciler, gömülü grafikler, şekiller, fotoğraflar ve vektör grafikleri içeren belgeleri sorunsuz bir şekilde derleyebilir ve yayına hazır PDF, XPS ve görüntü çıktıları oluşturabilir.

 

Grafik öğeleri içeren LaTeX belgelerini derlerken Aspose.TeX for Java, başvurulan görüntü dosyalarını yapılandırılmış IInputWorkingDirectory dizinine göre çözümler.

  • Fotoğraflar, raster ekran görüntüleri ve web grafikleri için \usepackage{graphicx} - \includegraphics{figure.png} komutlarını kullanarak eklenen PNG/JPEG biçimlerini seçin.
  • Yüksek hassasiyetli vektör diyagramları ve CAD/bilimsel grafikler için \usepackage{graphicx} - \includegraphics{diagram.eps} komutlarını kullanarak eklenen EPS biçimini seçin.
  • Eski bitmap görüntülerini eklemek için \usepackage{graphicx} - \includegraphics{image.bmp} komutlarını kullanarak eklenen BMP/TIFF biçimini seçin.

LaTeX'e raster görüntüleri (PNG/JPEG) ekleme

Standart raster görüntülerini eklemek için LaTeX belgenizin önsöz bölümüne graphicx paketini ekleyin ve hedef görüntü dosyasının adını \includegraphics{} içinde belirtin.

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

LaTeX'e vektör grafikleri (EPS) ekleme

Aspose.TeX, ObjectLaTeX biçim motoru üzerinden derleme yaparken Encapsulated PostScript (.eps) grafiklerini yerel olarak işler.

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 arşivlerinden grafik varlıklarını yükleme

TeX kaynak dosyalarını, makro paketlerini ve dinamik görüntüleri bir .zip arşivinde birlikte paketleyin ve Aspose.TeX’i grafik bağımlılıklarını doğrudan bellekten veya sıkıştırılmış depolama alanından çözümleyecek şekilde yapılandırın.

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

Kurulum ve yapılandırma

Aspose.TeX for Java’yı Maven kullanarak projenize entegre edin:

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 içinde bir iş adı belirtmezsem ne olur?

setJobName() aracılığıyla açıkça bir iş adı yapılandırılmazsa, Aspose.TeX varsayılan olarak ana giriş dosyasının adını kullanır (örneğin, main.tex, main.pdf ve main.log dosyalarını oluşturur).

2. Derleme .log dosyası oluşturmayı tamamen nasıl devre dışı bırakabilirim?

TeXJob oluşturmadan ve çalıştırmadan önce options.setLogOutput(false) ayarını yapın. Bu, motorun diskte veya çıktı çalışma dizininde yardımcı günlük dosyaları oluşturmasını engeller.

3. Sunucu/headless ortamlarda TeX terminal mesajlarını yakalayabilir miyim?

Evet. Özel bir OutputMemoryTerminal atamak veya IOutputTerminal uygulamak, tüm terminal stdout/stderr mesajlarını sunucunuzun kurumsal günlük sistemine (örneğin, Log4j veya SLF4J) yönlendirmenizi sağlar.