Java’da esnek TeX girişleri ve çalışma dizinleri
Aspose.TeX for Java kullanarak TeX ve LaTeX belgelerini derlemek için giriş kaynaklarını ve sanal dosya sistemi çalışma dizinlerini yapılandırın. Masaüstü TeX dağıtımlarını (MiKTeX veya TeX Live gibi) yüklemenize gerek kalmadan TeX kaynak dosyalarını, paketleri, makroları ve gömülü görüntüleri doğrudan yerel dosya sistemlerinden, sıkıştırılmış ZIP arşivlerinden veya özel bellek içi akışlardan aktarın.
TeX veya LaTeX belgelerini derlerken motorun ana kaynak dosyalarına (.tex), başvurulan alt dosyalara (\input{} veya \include), stillere (.sty), sınıflara (.cls), yazı tiplerine ve görüntülere erişmesi gerekir.
Aspose.TeX for Java, TeX giriş kaynaklarını IInputWorkingDirectory arabirimiyle temsil edilen soyut çalışma dizinlerine ayırır:
- Giriş çalışma dizini yerel dosya sistemi, TeX kaynak dosyalarını ve varlıkları doğrudan diskteki klasörlerden okumak için
InputFileSystemDirectorykullanır. - Giriş çalışma dizini ZIP arşivi, tüm bağımlılıkların (
.tex,.sty, görüntüler) tek bir .zip dosyasında depolandığı kapsüllenmiş TeX derlemesini okumak içinInputZipDirectorykullanır. - Giriş çalışma dizini özel akış/bellek, sanallaştırılmış dosya sistemlerini, veritabanı BLOB girdilerini veya bulut depolama akışlarını (S3/Azure Blob) okumak için
IInputWorkingDirectorkullanır."
Yerel dosya sistemi dizininden TeX girdisi yükleme
InputFileSystemDirectory kullanarak TeX motorunun giriş çalışma dizini olarak diskteki fiziksel bir klasörü belirtin.
import com.aspose.tex.*;
import java.io.IOException;
public class TeXInputFromFileSystem {
public static void main(String[] args) throws IOException {
// Create TeX options for LaTeX format using ObjectTeX engine
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
// Set the input working directory to a local file folder
String inputDirPath = "C:/TeXProject/Input/";
options.setInputWorkingDirectory(new InputFileSystemDirectory(inputDirPath));
// Set output working directory for compiled results (PDF/XPS/Images)
String outputDirPath = "C:/TeXProject/Output/";
options.setOutputWorkingDirectory(new OutputFileSystemDirectory(outputDirPath));
// Run TeX compilation for 'main.tex'
TeXJob job = new TeXJob("main", new PdfDevice(), options);
job.run();
System.out.println("TeX compilation from local directory completed successfully.");
}
}ZIP arşivinden TeX girdisi yükleme
InputZipDirectory kullanarak bağımsız TeX paketlerini diske çıkarmadan doğrudan bir .zip dosyasından derleyin.
import com.aspose.tex.*;
import java.io.FileInputStream;
import java.io.IOException;
public class TeXInputFromZipArchive {
public static void main(String[] args) throws IOException {
// Initialize LaTeX conversion options
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
// Open input ZIP stream containing main.tex, packages, and assets
FileInputStream zipStream = new FileInputStream("C:/TeXProject/ProjectBundle.zip");
// Set input working directory to the ZIP archive stream
options.setInputWorkingDirectory(new InputZipDirectory(zipStream, "subfolder_inside_zip"));
// Define output directory on disk
options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));
// Execute TeX job referencing 'main.tex' inside the ZIP
TeXJob job = new TeXJob("main", new PdfDevice(), options);
job.run();
zipStream.close();
System.out.println("TeX compilation directly from ZIP archive completed.");
}
}TeX kaynağını bellek akışı üzerinden aktarma
Dinamik LaTeX oluşturma (sunucuda işlenen raporlar veya dinamik denklem oluşturma gibi) için ham dize içeriğini veya akışları doğrudan TeXJob öğesine aktarın.
import com.aspose.tex.*;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
public class TeXInputFromMemoryStream {
public static void main(String[] args) throws Exception {
// Create dynamic LaTeX content string
String latexCode = "\\documentclass{article}\n" +
"\\begin{document}\n" +
"\\section{Dynamic Report}\n" +
"Hello World from Aspose.TeX for Java!\n" +
"\\end{document}";
InputStream inputSteam = new ByteArrayInputStream(latexCode.getBytes(StandardCharsets.UTF_8));
// Configure options
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));
// Run job passing stream directly
TeXJob job = new TeXJob(inputSteam, new PdfDevice(), options);
job.run();
System.out.println("Dynamic LaTeX stream successfully compiled to PDF.");
}
}Kurulum ve Yapılandırma
Maven kullanarak Aspose.TeX for Java’yı 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. MiKTeX, TeX Live veya harici çalıştırılabilir ikili dosyaları yüklemem gerekiyor mu?
Hayır. Aspose.TeX for Java, harici yerel çalıştırılabilir dosyalara ihtiyaç duymadan TeX/LaTeX ayrıştırma, dizgi ve işleme işlemlerini yerel olarak gerçekleştiren tamamen bağımsız bir Java motorudur.
2. Ana dosyalar ve harici grafikler/stiller için farklı giriş kaynaklarını bir arada kullanabilir miyim?
Evet. Birincil InputWorkingDirectory (örneğin, InputZipDirectory) ayarlayabilir ve TeXOptions yapılandırma ayarlarını kullanarak yardımcı paket/yazı tipi arama yollarını yapılandırabilirsiniz.
3. Aspose.TeX, \input{} veya \includegraphics{} makrolarındaki göreli yolları nasıl işler?
LaTeX belgelerinde tanımlanan göreli yollar, etkin IInputWorkingDirectory örneği tarafından belirtilen köke göre otomatik olarak çözümlenir.