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.
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// Create conversion options instance.
2...
3// Specify a file system working directory for the output.
4options.setOutputWorkingDirectory(new OutputFileSystemDirectory(Utils.getOutputDirectory()));
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// Open the stream for the ZIP archive that will serve as the output working directory.
2final OutputStream outZipStream = new FileOutputStream(Utils.getOutputDirectory() + "zip-pdf-out.zip");
3{
4 // Create conversion options instance.
5 ...
6 // Specify a ZIP archive working directory for the output.
7 options.setOutputWorkingDirectory(new OutputZipDirectory(outZipStream));
8} finally {
9 if (outZipStream != null)
10 outZipStream.close();
11}
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.
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// Create conversion options instance.
2...
3// Specify the console as the input terminal.
4options.setTerminalOut(new OutputConsoleTerminal()); // Default value. Arbitrary assignment.
Encore une fois, il s’agit de la valeur par défaut de l’option, il n’est donc pas vraiment nécessaire de la spécifier. Pour cette raison, cette section sert uniquement à des fins de démonstration.
É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// Create conversion options instance.
2...
3// Specify that the terminal output must be written to a file in the output working directory.
4// The file name is <job_name>.trm.
5options.setTerminalOut(new OutputFileTerminal(options.getOutputWorkingDirectory()));
Ici, nous demandons au moteur TeX d’écrire la sortie du terminal dans le fichier portant le nom <job_name>.trm, qui sera stocké dans le même répertoire de sortie que celui que nous avons spécifié pour le reste de la sortie. Mais ce n’est pas nécessaire. Nous pourrions aussi bien transmettre toute autre instance de toute implémentation de IOutputTerminal au constructeur.