LaTeX en PDF | Solution API Aspose.TeX pour C++

Comment convertir LaTeX en PDF

Examinons en détail le code en C++ fournissant le moyen le plus simple de convertir LaTeX au format PDF.

                
            

Ainsi, la première chose que nous devons faire (enfin, parfois pas la toute première) est de créer une instance de la classe TeXOptions. La seule méthode statique qui fait cela est ConsoleAppOptions(), alors ne soyons pas intrigués par la signification de son nom. La méthode prend une instance de la classe TeXConfig, qui convient parfaitement à la conversion d’un fichier LaTeX. Cette configuration indique au moteur Object TeX de charger le format Object LaTeX et d’être prêt à accepter le fichier LaTeX. Le format Object LaTeX n’est en fait que le format LaTeX, sauf qu’il utilise des primitives spécifiques à Object TeX pour configurer les métriques de la page.

La première des options requises est OutputWorkingDirectory qui définit l’espace, ou la zone, où la sortie TeX sera écrite. Ici sont les détails sur le concept de répertoire de sortie dans Aspose.TeX pour C++. Dans cet exemple, nous utilisons la classe OutputFileSystemDirectory, qui nous permet d’écrire la sortie dans le répertoire ou dossier spécifié.

La deuxième option est une instance de classe SaveOptions qui contrôlera la transformation du modèle objet au format cible. Puisque nous convertissons LaTeX en PDF, il s’agit de l’instance de classe PdfSaveOptions.

Ensuite, nous devons créer une instance de la classe TeXJob. Voulant convertir un fichier LaTeX stocké dans le système de fichiers, nous utilisons cette version du constructeur. Nous devons spécifier le chemin complet du fichier. Sinon, le moteur le recherchera dans le répertoire courant (qui est CurrentDirectory) et ne le trouvera probablement pas. Néanmoins, nous pouvons omettre l’extension si notre fichier possède celle .tex. Le moteur l’ajoutera automatiquement. Le deuxième argument du constructeur est une instance de classe Device. Puisque nous convertissons LaTeX en PDF, il s’agit d’une instance de classe PdfDevice. Comme dernier argument, nous passons les options de conversion récemment préparées.

Il ne reste plus qu’à exécuter le travail.

Que l’exécution ait réussi ou non, le premier résultat que nous verrons sera la sortie du terminal. En cas de succès, cela ressemble à ceci :

 1This is ObjectTeX, Version 3.1415926-1.0 (Aspose.TeX 21.8)
 2entering extended mode
 3
 4(<input_directory>\hello-world.ltx
 5LaTeX2e <2011/06/27>
 6(article.cls
 7Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
 8(size10.clo))
 9No file hello-world.aux.
10[1]
11(<output_directory>\hello-world.aux) )
12Output written on hello-world.pdf (1 page).
13Transcript written on hello-world.log.

Nous retrouverons d’autres “fruits” du travail du moteur dans le dossier que nous avons spécifié comme répertoire de sortie. Ce seront le fichier de transcription et, le voici !, le fichier PDF de sortie principal.

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

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

 1    // Create the stream to write the XPS file to.
 2    {
 3        System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(System::IO::Path::Combine(RunExamples::OutputDirectory, u"any-name.pdf"), System::IO::FileMode::Create);
 4        // Clearing resources under 'using' statement
 5        System::Details::DisposeGuard<1> __dispose_guard_0({ pdfsStream});
 6        // ------------------------------------------
 7        
 8        try
 9        {
10            // Create conversion options for Object LaTeX format on Object TeX engine extension.
11            System::SharedPtr<TeXOptions> options = TeXOptions::ConsoleAppOptions(TeXConfig::get_ObjectLaTeX());
12            // Specify the file system working directory for the output.
13            options->set_OutputWorkingDirectory(System::MakeObject<OutputFileSystemDirectory>(RunExamples::OutputDirectory));
14            // Initialize the options for saving in PDF format.
15            options->set_SaveOptions(System::MakeObject<PdfSaveOptions>());
16            // Default value.
17            // Run LaTeX to XPS conversion.
18            System::MakeObject<TeXJob>(System::IO::Path::Combine(RunExamples::InputDirectory, u"hello-world.ltx"), System::MakeObject<PdfDevice>(pdfStream), options)->Run();
19        }
20        catch(...)
21        {
22            __dispose_guard_0.SetCurrentException(std::current_exception());
23        }
24    }

Le fichier any-name.pdf dans le répertoire spécifié sera notre fichier PDF de sortie principal. En même temps, contrairement à image output, nous ne trouverons aucun fichier PDF dans le répertoire de sortie défini par les options de conversion. Exception : any-name.pdf se trouve (par son chemin) dans le même répertoire du système de fichiers qui est attribué à l’option OutputWorkingDirectory à l’aide de OutputFileSystemDirectory.

À propos des options de saisie

Dans le cas où notre fichier d’entrée principal nécessite des dépendances, par exemple des packages, qui ne sont pas inclus dans le système LaTeX de base et les packages pris en charge, nous DEVONS définir l’option RequiredInputDirectory de la même manière que nous définissons le OutputWorkingDirectory. option et placez les dépendances dans ce répertoire. Les dépendances peuvent être arbitrairement organisées en sous-répertoires. Dans le cas où nous avons nos propres fichiers à inclure tout au long du processus de composition, par exemple des fichiers graphiques externes, nous DEVONS également définir le InputWorkingDirectory en utilisant le chemin d’accès à l’emplacement où ces fichiers sont collectés. Nous pouvons également placer le fichier d’entrée principal quelque part dans le répertoire d’entrée et spécifier le chemin relatif dans la méthode run() (ou ne spécifier aucun chemin si le fichier d’entrée principal est à la racine). Ici sont les détails sur le concept de répertoire d’entrée dans Aspose.TeX pour C++ et les implémentations fournies.

D’autres options de travail TeX sont discutées ici.

Vous pouvez également consulter la conversion gratuite LaTeX en PDF application Web construite sur la base de Aspose.TeX pour l’API C++.

Have any questions about Aspose.TeX?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.