Java’da TeX ana girişini belirtmenin alternatif yolları
Aspose.TeX for Java kullanarak TeX ve LaTeX kaynak içeriğini dizgi motoruna aktarmanın esnek yollarını keşfedin. Geliştiriciler, statik .tex dosyalarını bir dosya sisteminden veya ZIP arşivinden yüklemenin yanı sıra ham TeX dize değişkenlerini, bellek akışlarını, bayt dizilerini veya özel okuyucuları doğrudan TeXJob‘a aktararak belgeleri gerçek zamanlı olarak derleyebilir ve sunucu tarafında işlenen raporlar oluşturabilir.
Uygulama mimarinize (ör. REST API, veritabanı tabanlı yayıncılık veya bulut mikro hizmeti) bağlı olarak iş akışınıza en uygun ana giriş yöntemini seçin:
- Ana
.texdosyasınınIInputWorkingDirectoryiçinde bulunduğu standart dosya tabanlı projelerde, giriş olarak adlandırılmış bir dosya kullanın ve yeniTeXJob(‘main’, device, options) oluşturma yöntemini kullanın. - Şablon motorlarından dinamik belge oluşturmak için giriş kaynağı olarak bir dize kullanın ve yeni
TeXJob(new StringReader(latexCode), device, options) oluşturma yöntemini kullanın. - Ağ isteklerinden, veritabanı BLOB’larından veya bulut depolama alanından (S3/GCS) doğrudan akış yoluyla giriş almak için giriş kaynağı olarak bir
InputStreamkullanın ve yeniTeXJob(inputStream, device, options) oluşturma yöntemini kullanın. - Disk G/Ç darboğazları olmadan yüksek performanslı bellek içi işleme için giriş kaynağı olarak bir bellek arabelleği kullanın ve yeni yeni
TeXJob(new ByteArrayInputStream(bytes), device, options) oluşturma yöntemini kullanın.
TeX kaynağını bir Java dize değişkeni olarak aktarma
Geçici .tex dosyalarını diske kaydetmeden ham dizelerden veya dinamik dize şablonlarından doğrudan TeX belgeleri oluşturun.
import com.aspose.tex.*;
import java.io.StringReader;
public class TeXInputFromString {
public static void main(String[] args) throws Exception {
// Create a dynamic LaTeX string
String latexContent = "\\documentclass{article}\n" +
"\\begin{document}\n" +
"\\title{Dynamic Invoice}\n" +
"\\author{Automated System}\n" +
"\\maketitle\n" +
"\\section{Summary}\n" +
"This document was compiled directly from a Java String variable.\n" +
"\\end{document}";
// Initialize LaTeX conversion options
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));
// Run TeX job passing StringReader as the main input
TeXJob job = new TeXJob(new StringReader(latexContent), new PdfDevice(), options);
job.run();
System.out.println("Document compiled successfully from String input.");
}
}TeX kaynağını bir InputStream'den aktarma
TeX kaynak kodunu HTTP istekleri, veritabanı alanları veya kaynak paketleri tarafından sağlanan giriş akışlarından doğrudan okuyun.
import com.aspose.tex.*;
import java.io.FileInputStream;
import java.io.InputStream;
public class TeXInputFromInputStream {
public static void main(String[] args) throws Exception {
// Open an input stream from a remote or custom source
InputStream texStream = new FileInputStream("C:/TeXProject/Templates/report.tex");
// Initialize options
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));
// Execute TeX job directly with InputStream
TeXJob job = new TeXJob(texStream, new PdfDevice(), options);
job.run();
texStream.close();
System.out.println("TeX compilation from InputStream finished.");
}
}Akış girişini yerel çalışma dizini varlıklarıyla birleştirme
Ana TeX içeriği bir akış veya dize aracılığıyla aktarılırken, ikincil varlıklar (harici görüntüler \includegraphics{} veya stil paketleri \usepackage{} gibi) yine de bir IInputWorkingDirectory üzerinden çözümlenebilir.
import com.aspose.tex.*;
import java.io.ByteArrayInputStream;
import java.nio.charset.StandardCharsets;
public class TeXStreamWithAssetDirectory {
public static void main(String[] args) throws Exception {
// LaTeX string referencing an external image asset 'logo.png'
String latexCode = "\\documentclass{article}\n" +
"\\usepackage{graphicx}\n" +
"\\begin{document}\n" +
"\\includegraphics{logo.png}\n" +
"\\end{document}";
ByteArrayInputStream inputStream = new ByteArrayInputStream(latexCode.getBytes(StandardCharsets.UTF_8));
// Configure options and set directory for resolving assets (logo.png)
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
options.setInputWorkingDirectory(new InputFileSystemDirectory("C:/TeXProject/Assets/"));
options.setOutputWorkingDirectory(new OutputFileSystemDirectory("C:/TeXProject/Output/"));
// Run TeX job
TeXJob job = new TeXJob(inputStream, new PdfDevice(), options);
job.run();
System.out.println("Dynamic stream compiled with external assets resolved successfully.");
}
}Kurulum ve Ayarlar
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. LaTeX dizelerini PDF’ye dönüştürürken geçici disk dosyaları oluşturmam gerekiyor mu?
Hayır. StringReader veya ByteArrayInputStream kullanarak dize içeriğini doğrudan TeXJob öğesine aktarabilir ve çıktıyı ByteArrayOutputStream öğesine akıtabilirsiniz. Bu, diske hiç dokunmadan %100 bellek içi işlem yapılmasını sağlar.
2. Akış tabanlı bir TeX kaynağındaki göreli dosya başvuruları nasıl çözümlenir?
Ana giriş bir akış veya dize olarak aktarıldığında, \input{}, \include{} veya \includegraphics{} içindeki göreli yollar options.setInputWorkingDirectory() aracılığıyla yapılandırılan dizine göre çözümlenir.
3. Giriş bir akış olarak sağlandığında çıktı adlandırmasına ne olur?
Ana giriş bir akış olduğunda Aspose.TeX, çıktı PDF/XPS dosyalarını ve yardımcı günlük dosyalarını adlandırmak için varsayılan iş adını (veya açıkça yapılandırılmış iş adını using options.setJobName(‘custom_name’)) kullanır.