LaTeX vers XPS | Java

Un autre format cible est XPS. Un fichier XPS est physiquement un package ZIP qui contient le contenu paginé d’un document, ainsi que les métadonnées requises pour un affichage correct par des visualiseurs spécifiques (tels que Windows XPS Viewer) et une impression. Toutes les données d’un package sont organisées sous forme de fichiers dans des répertoires. Certains d’entre eux contiennent des ressources telles que des images, des polices et des profils ICC. D’autres sont des fichiers XML dans divers schémas spécifiques. Ces derniers incluent des fichiers contenant les données du document elles-mêmes. Les données du document sont un ensemble de fichiers - chaque fichier contient des données pour une page individuelle du document. Ces fichiers se composent d’un seul élément de page et d’une arborescence d’éléments enfants - Canvas, Path et Glyphs. Canvas est un élément de regroupement qui peut contenir d’autres Canvas, Paths et Glyphs. Son objectif est de contrôler l’apparence de tous les éléments enfants en tant que groupe. Les éléments Path sont utilisés pour définir des chemins de graphiques vectoriels. Et les éléments Glyphs sont utilisés pour définir le contenu du texte. Les trois éléments ont des propriétés permettant de définir divers aspects de l’apparence.

Il existe la bibliothèque Aspose.Page qui fournit une API pour manipuler les documents XPS, ainsi que pour les convertir aux formats PDF et d’image raster.

Comment convertir LaTeX en XPS

La conversion en XPS est aussi simple que la conversion aux formats d’image raster, sauf qu’en plus des SaveOptions, nous devons utiliser une instance de la classe XpsDevice .

Définissez inputFile sur le chemin complet de votre fichier LaTeX, par exemple hello-world.ltx, et outputDirectory sur un dossier de sortie existant. Importez les classes de com.aspose.tex et com.aspose.tex.rendering utilisées dans l’extrait. La méthode appelante doit gérer ou déclarer les exceptions. Appliquez une licence comme décrit dans le guide des licences pour éviter les restrictions d’évaluation. L’exemple utilise un traitement non interactif et ferme ses ressources de sortie. Pour le fichier d’entrée autonome hello-world.ltx, la sortie par défaut est hello-world.xps.

 1// Convert LaTeX to XPS using the default output filename.
 2// inputFile is the full input path; outputDirectory is an existing output folder.
 3TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
 4OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
 5options.setOutputWorkingDirectory(output);
 6options.setSaveOptions(new XpsSaveOptions());
 7options.setInteraction(Interaction.NonstopMode);
 8
 9XpsDevice device = new XpsDevice();
10TeXJobResult result;
11try {
12    result = new TeXJob(inputFile, device, options).run();
13} finally {
14    device.dispose();
15    output.close();
16}

Une autre façon d’écrire le fichier XPS de sortie principal

Il existe un autre constructeur de la classe XpsDevice, qui nous permet d’obtenir le fichier XPS résultant d’une manière alternative.

Utilisez les mêmes valeurs de inputFile et outputDirectory que ci-dessus. Définissez xpsFile comme un java.nio.file.Path, par exemple Paths.get(outputDirectory, "any-name.xps"). En plus des classes Aspose.TeX, importez java.io.OutputStream, java.nio.file.Files, java.nio.file.Path et java.nio.file.Paths. Le flux contrôle la destination du fichier XPS ; les fichiers auxiliaires sont toujours écrits dans outputDirectory.

 1// Convert LaTeX to XPS using an explicitly selected output stream.
 2// inputFile is the full input path; outputDirectory is an existing output folder.
 3// xpsFile is the java.nio.file.Path of the XPS file to create.
 4TeXJobResult result;
 5try (OutputStream xpsStream = Files.newOutputStream(xpsFile)) {
 6    TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());
 7    OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
 8    options.setOutputWorkingDirectory(output);
 9    options.setSaveOptions(new XpsSaveOptions());
10    options.setInteraction(Interaction.NonstopMode);
11
12    XpsDevice device = new XpsDevice(xpsStream);
13    try {
14        result = new TeXJob(inputFile, device, options).run();
15    } finally {
16        device.dispose();
17        output.close();
18    }
19}

L’effet est le même que celui que nous obtenons ici.

Vous pouvez également consulter la conversion gratuite LaTeX vers XPS application Web construite sur la base de l’API Aspose.TeX for .NET. Ici est la page de la version Java.