Interface de sortie d'Aspose.TeX | Java
Veuillez vous référer à Aspose.TeX for Java Référence API pour les définitions formelles de l’implémentation des E/S.
Les exemples de système de fichiers, ZIP et terminal composent hello-world.tex en XPS. Définissez inputDirectory sur un dossier contenant le fichier TeX et outputDirectory sur un dossier de sortie existant. Pour la sortie ZIP, outputZip doit être un java.nio.file.Path dans un dossier existant. Importez les classes Aspose.TeX utilisées dans l’exemple choisi, com.aspose.tex.rendering.XpsDevice et les classes nécessaires de java.io et java.nio.file. La méthode appelante doit gérer ou déclarer les exceptions. Appliquez une licence conformément au
guide des licences pour éviter les restrictions d’évaluation.
Le concept du répertoire de sortie
Étant donné que les primitives d’E/S du langage TeX ne peuvent traiter que les noms de fichiers, Aspose.TeX définit un répertoire comme un mappage entre les noms et les lots de données. Les masses de données sont censées être des fichiers, des flux, des tableaux ou quoi que ce soit d’autre. L’API nous permet de spécifier séparément les répertoires de travail d’entrée et de sortie. Il fournit l’interface générale IOutputWorkingDirectory pour la sortie, que l’utilisateur peut implémenter à ses propres fins. Il fournit également ses propres implémentations, qui seront discutées ci-dessous. L’interface étend IInputWorkingDirectory, puisque le moteur peut d’abord créer et écrire un fichier, puis le relire. La propre méthode de l’interface getOuputFile() renvoie le flux dans lequel écrire, par opposition au flux à lire renvoyé par getFile().
Écriture de la sortie du fichier sur le système de fichiers du disque
Comme nous l’avons mentionné ci-dessus, la valeur la plus courante pour OutputWorkingDirectory serait probablement une instance de la classe OutputFileSystemDirectory.
Voici comment nous le définirions :
1// inputDirectory contains hello-world.tex; outputDirectory is an existing output folder.
2TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectTeX());
3InputFileSystemDirectory input = new InputFileSystemDirectory(inputDirectory);
4OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
5options.setInputWorkingDirectory(input);
6options.setOutputWorkingDirectory(output);
7options.setInteraction(Interaction.NonstopMode);
8options.setTerminalOut(new OutputMemoryTerminal());
9
10XpsDevice device = new XpsDevice();
11TeXJobResult result;
12try {
13 result = new TeXJob("hello-world", device, options).run();
14} finally {
15 device.dispose();
16 output.close();
17 input.close();
18}Ce cas d’utilisation est assez simple, nous ne nous y attarderons donc pas longtemps.
Écriture de la sortie du fichier dans une archive ZIP
Nous pouvons également créer un fichier (ou un flux) et laisser le moteur TeX l’utiliser comme archive ZIP pour stocker les fichiers de sortie. C’est ici:
1// Store the XPS document and TeX transcript in a ZIP archive.
2// inputDirectory contains hello-world.tex; outputZip is the java.nio.file.Path to create.
3TeXJobResult result;
4try (OutputStream zipStream = Files.newOutputStream(outputZip)) {
5 TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectTeX());
6 InputFileSystemDirectory input = new InputFileSystemDirectory(inputDirectory);
7 OutputZipDirectory output = new OutputZipDirectory(zipStream);
8 options.setInputWorkingDirectory(input);
9 options.setOutputWorkingDirectory(output);
10 options.setInteraction(Interaction.NonstopMode);
11 options.setTerminalOut(new OutputMemoryTerminal());
12 XpsDevice device = new XpsDevice();
13 try {
14 result = new TeXJob("hello-world", device, options).run();
15 // Finalize the archive while its underlying stream is still open.
16 output.finish();
17 } finally {
18 device.dispose();
19 output.close();
20 input.close();
21 }
22}Tout d’abord, nous créons un flux de sortie pour le fichier ZIP. Ensuite, après avoir créé les options de conversion, nous définissons l’option
OutputWorkingDirectory comme étant une instance de la classe
OutputZipDirectory. L’exemple stocke hello-world.xps et hello-world.log dans l’archive. Après le travail, appelez finish() sur le répertoire de sortie avant de fermer le flux sous-jacent. Les exemples gardent leurs flux et répertoires de travail ouverts jusqu’à la fin du travail, puis les ferment.
Le concept du terminal de sortie
Il y a une autre partie importante de la sortie : la sortie du terminal. Quant à celui-ci, Aspose.TeX for Java définit l’interface générale IOutputTerminal comme ayant deux méthodes. L’un d’eux renvoie une instance de BufferedWriter. Un autre renvoie une instance OutputStream comme flux sous-jacent. Les implémentations fournies de l’interface sont décrites ci-dessous.
Écriture de la sortie du terminal sur la console
Pour ce faire, nous devons définir l’option TerminalOut pour qu’elle soit une instance de la classe OutputConsoleTerminal.
1// inputDirectory contains hello-world.tex; outputDirectory is an existing output folder.
2TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectTeX());
3InputFileSystemDirectory input = new InputFileSystemDirectory(inputDirectory);
4OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
5options.setInputWorkingDirectory(input);
6options.setOutputWorkingDirectory(output);
7options.setInteraction(Interaction.NonstopMode);
8// This is also the default output terminal.
9options.setTerminalOut(new OutputConsoleTerminal());
10
11XpsDevice device = new XpsDevice();
12TeXJobResult result;
13try {
14 result = new TeXJob("hello-world", device, options).run();
15} finally {
16 device.dispose();
17 output.close();
18 input.close();
19}OutputConsoleTerminal est la valeur par défaut de cette option. L’exemple le sélectionne explicitement et écrit la sortie du terminal dans la console pendant la conversion. Les quatre exemples s’exécutent sans interaction ; les exemples de système de fichiers et ZIP capturent la sortie du terminal en mémoire.
Écrire la sortie du terminal dans un fichier
Contrairement au terminal d’entrée, Aspose.TeX pour Java fournit une implémentation de IOutputTerminal, qui nous permet d’écrire la sortie du terminal dans un fichier dans un répertoire de sortie.
1// inputDirectory contains hello-world.tex; outputDirectory is an existing output folder.
2TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectTeX());
3InputFileSystemDirectory input = new InputFileSystemDirectory(inputDirectory);
4OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
5options.setInputWorkingDirectory(input);
6options.setOutputWorkingDirectory(output);
7options.setInteraction(Interaction.NonstopMode);
8// Set the output directory first: the terminal writes <job_name>.trm there.
9options.setTerminalOut(new OutputFileTerminal(options.getOutputWorkingDirectory()));
10
11XpsDevice device = new XpsDevice();
12TeXJobResult result;
13try {
14 result = new TeXJob("hello-world", device, options).run();
15} finally {
16 device.dispose();
17 output.close();
18 input.close();
19}Définissez le répertoire de travail de sortie avant de créer OutputFileTerminal. Il écrit la sortie du terminal dans
<job_name>.trm, ici hello-world.trm, dans ce répertoire. Ce fichier du terminal est distinct de la transcription TeX hello-world.log. Pour écrire la sortie du terminal ailleurs, transmettez au constructeur une autre implémentation de
IOutputWorkingDirectory.