Java에서의 유연한 TeX 출력 및 출력 작업 디렉터리

Aspose.Font for Java를 사용하여 TeX 및 LaTeX 문서 컴파일을 위한 출력 대상과 저장 메커니즘을 구성합니다. 데스크톱 TeX 설치 없이 렌더링된 문서(PDF, XPS, SVG, PNG, JPEG, TIFF, BMP)와 컴파일 보조 아티팩트(.log, .aux)를 실제 디스크 폴더, 압축 ZIP 아카이브 또는 사용자 지정 메모리 내 스트림에 직접 저장할 수 있습니다.

 

컴파일하는 동안 TeX 조판 엔진은 두 가지 주요 출력 범주를 생성합니다.

  • 기본 출력 파일: 대상 문서(예: .pdf, .xps 또는 이미지 시퀀스).
  • 보조 출력 파일: 로그(.log), 보조 데이터(.aux) 및 LaTeX 매크로에서 생성되는 중간 파일.

Aspose.TeX for Java는 IOutputWorkingDirectory 인터페이스를 통해 출력 대상을 추상 작업 디렉터리로 캡슐화하여 개발자가 출력 스트림을 동적으로 지정할 수 있도록 합니다. 지원되는 출력 디렉터리 유형:

  • 출력 작업 디렉터리 로컬 파일 시스템OutputFileSystemDirectory를 사용하여 렌더링된 문서와 로그 파일을 로컬 디스크 폴더에 직접 저장합니다.
  • 출력 작업 디렉터리 ZIP 아카이브OutputZipDirectory를 사용하여 출력 문서, 로그 및 생성된 자산을 하나의 .zip 파일로 패키징합니다.
  • 출력 작업 디렉터리 사용자 지정 스트림/메모리IOutputWorkingDirectory를 사용하여 출력을 메모리, 데이터베이스 BLOB 또는 클라우드 스트림(S3/Azure Blob)에 직접 캡처합니다.

TeX 출력을 로컬 파일 시스템 디렉터리에 저장

OutputFileSystemDirectory를 사용하여 기본 문서 출력과 보조 컴파일 로그를 실제 폴더로 지정합니다.

import com.aspose.tex.*;
import java.io.IOException;

public class TeXOutputToFileSystem {
    public static void main(String[] args) throws IOException {
        // Initialize options for LaTeX format using ObjectTeX
        TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

        // Set input working directory
        options.setInputWorkingDirectory(new InputFileSystemDirectory("C:/TeXProject/Input/"));

        // Set output working directory for compiled documents and logs
        String outputDirPath = "C:/TeXProject/Output/";
        options.setOutputWorkingDirectory(new OutputFileSystemDirectory(outputDirPath));

        // Execute TeX job producing PDF output
        TeXJob job = new TeXJob("main", new PdfDevice(), options);
        job.run();

        System.out.println("TeX compilation complete. Outputs saved to: " + outputDirPath);
    }
}

TeX 출력을 ZIP 아카이브에 직접 저장

OutputZipDirectory를 사용하여 렌더링된 문서와 중간 로그 및 생성된 이미지를 압축 ZIP 파일로 패키징합니다.

import com.aspose.tex.*;
import java.io.FileOutputStream;
import java.io.IOException;

public class TeXOutputToZipArchive {
    public static void main(String[] args) throws IOException {
        // Initialize LaTeX conversion options
        TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
        options.setInputWorkingDirectory(new InputFileSystemDirectory("C:/TeXProject/Input/"));

        // Create output stream for destination ZIP file
        FileOutputStream zipStream = new FileOutputStream("C:/TeXProject/OutputBundle.zip");

        // Set output working directory to ZIP stream
        options.setOutputWorkingDirectory(new OutputZipDirectory(zipStream));

        // Run job targeting PDF rendering
        TeXJob job = new TeXJob("main", new PdfDevice(), options);
        job.run();

        zipStream.close();
        System.out.println("TeX outputs and logs successfully bundled into OutputBundle.zip.");
    }
}

TeX 출력을 메모리/ByteArray로 스트리밍

클라우드 또는 웹 애플리케이션의 경우, 파일을 로컬 디스크 저장소에 기록하지 않고 렌더링된 문서를 바이트 스트림으로 직접 캡처합니다.

import com.aspose.tex.*;
import java.io.ByteArrayOutputStream;

public class TeXOutputToMemoryStream {
    public static void main(String[] args) throws Exception {
        // Configure conversion options
        TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
        options.setInputWorkingDirectory(new InputFileSystemDirectory("C:/TeXProject/Input/"));

        // Initialize memory output stream device
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        
        // Configure output working directory for log/auxiliary files
        options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Logs/"));

        // Run compilation directing PDF output to byte array stream
        TeXJob job = new TeXJob("main", new PdfDevice(outputStream), options);
        job.run();

        byte[] pdfBytes = outputStream.toByteArray();
        System.out.println("Generated PDF size in memory: " + pdfBytes.length + " bytes.");
    }
}

설치 및 설정

Maven을 사용하여 Aspose.TeX for Java를 프로젝트에 통합합니다.

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. Aspose.TeX for Java에서 지원되는 출력 대상 장치는 무엇인가요?

Aspose.TeX는 PdfDevice(PDF 문서), XpsDevice(XPS 문서), SvgDevice(확장 가능한 벡터 그래픽) 및 ImageDevice(PNG, JPEG, TIFF, BMP와 같은 래스터 이미지)를 비롯한 여러 출력 장치를 지원합니다.

2. 보조 컴파일 파일(.log, .aux)은 어디에 저장되나요?

보조 파일은 TeXOptions.setOutputWorkingDirectory()에 지정된 디렉터리에 기록됩니다. OutputZipDirectory를 사용하는 경우 .log.aux 파일은 렌더링된 문서와 함께 ZIP 아카이브 내부에 직접 패키징됩니다.

3. 로그 출력 파일을 억제하거나 리디렉션할 수 있나요?

예. TeXOptions.setTerminalOut()을 통해 터미널/로그 출력 처리를 사용자 지정하거나, 사용자 지정 IOutputWorkingDirectory 구현을 할당하여 컴파일 로그를 삭제하거나 다른 위치로 리디렉션할 수 있습니다.