Interface de saisie 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 et ZIP composent hello-world.tex dans hello-world.xps. Définissez inputDirectory sur un dossier contenant le fichier TeX et outputDirectory sur un dossier de sortie existant. Pour l’entrée ZIP, inputZip doit être un java.nio.file.Path vers une archive contenant in/hello-world.tex. 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 d’entrée
Étant donné que les primitives d’E/S du langage TeX ne peuvent traiter que les noms de fichiers, Aspose.TeX pour Java définit un répertoire comme un mappage entre des noms et des 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 IInputWorkingDirectory, que l’utilisateur peut implémenter pour ses propres besoins. Il fournit également ses propres implémentations, qui seront discutées ci-dessous. L’interface définit la méthode getFile(), qui renvoie le flux de données et détermine le nom complet du fichier, tout en prenant un nom, hypothétiquement différent, comme premier argument, qui, en fait, est la clé de mappage. .
Obtenir une entrée de fichier à partir du système de fichiers du disque
Voici comment nous procéderions :
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.
Obtenir une entrée de fichier à partir d’une archive ZIP
Nous pouvons également mettre les fichiers d’entrée dans une archive ZIP et la considérer comme un répertoire d’entrée. Dans ce cas, il faut procéder comme suit :
1// Read hello-world.tex from the in/ folder of a ZIP archive.
2// inputZip is a java.nio.file.Path; outputDirectory is an existing output folder.
3TeXJobResult result;
4try (InputStream zipStream = Files.newInputStream(inputZip)) {
5 TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectTeX());
6 InputZipDirectory input = new InputZipDirectory(zipStream, "in");
7 OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
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 } finally {
16 device.dispose();
17 output.close();
18 input.close();
19 }
20}Tout d’abord, nous créons le flux contenant le fichier ZIP. Ensuite, après avoir créé les options de conversion, nous définissons l’option InputWorkingDirectory comme étant une instance de la classe InputZipDirectory. Le deuxième argument du constructeur est le chemin de base à l’intérieur de l’archive. Si nous voulons que l’archive entière soit un répertoire d’entrée, nous devons transmettre la chaîne vide. L’exemple garde le flux ZIP et le répertoire d’entrée ouverts jusqu’à la fin du travail TeX, puis les ferme. Il s’exécute sans interaction et capture la sortie du terminal en mémoire.
Le concept du terminal d’entrée
Rappelons maintenant qu’il y a aussi l’entrée du terminal. Quant à celui-ci, Aspose.TeX for Java définit l’interface générale IInputTerminal comme ayant deux méthodes. L’un d’eux renvoie une instance de BufferedReader. Une autre méthode renvoie un InputStream comme flux sous-jacent. Les implémentations fournies de l’interface sont décrites ci-dessous.
Obtenir l’entrée du terminal depuis la console
Pour ce faire, nous devons définir l’option TerminalIn pour qu’elle soit une instance de la classe InputConsoleTerminal.
1// Use the console for terminal input; this is also the default.
2TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectTeX());
3options.setTerminalIn(new InputConsoleTerminal());InputConsoleTerminal est la valeur par défaut de cette option. Cet exemple illustre uniquement la configuration du terminal et n’exécute aucun travail. Un travail demandant une entrée du terminal nécessite une saisie utilisateur ou une implémentation personnalisée du terminal. Les exemples de système de fichiers et ZIP ci-dessus s’exécutent sans interaction avec des fichiers d’entrée complets.
Théoriquement, si nous disposons d’un fichier (ou script) TeX interactif avec un comportement prévisible, nous souhaiterons peut-être implémenter une version du terminal d’entrée qui contiendrait un script complémentaire pour répondre aux requêtes du moteur TeX. Essayez-vous quand vous avez le temps !