LaTeX zu PDF | Aspose.TeX API-Lösung für C++

So konvertieren Sie LaTeX in PDF

Werfen wir einen detaillierten Blick auf den Code in C++, der die einfachste Möglichkeit zur Konvertierung von LaTeX in das PDF-Format bietet.

                
            

Das erste, was wir also tun müssen (na ja, manchmal nicht das allererste), ist, eine Instanz der Klasse TeXOptions zu erstellen. Die einzige statische Methode, die dies tut, ist ConsoleAppOptions(). Lassen Sie uns also nicht über die Bedeutung ihres Namens rätseln. Die Methode benötigt eine Instanz der Klasse TeXConfig, die genau zum Konvertieren einer LaTeX-Datei geeignet ist. Diese Konfiguration weist die Object TeX-Engine an, das Object LaTeX-Format zu laden und bereit zu sein, die LaTeX-Datei zu akzeptieren. Das Object LaTeX-Format ist eigentlich nur das LaTeX-Format, außer dass es Object TeX-spezifische Grundelemente verwendet, um die Seitenmetriken einzurichten.

Die erste der erforderlichen Optionen ist OutputWorkingDirectory, die den Raum oder Bereich definiert, in den die TeX-Ausgabe geschrieben wird. Hier finden Sie die Details zum Ausgabeverzeichniskonzept in Aspose.TeX für C++. In diesem Beispiel verwenden wir die Klasse OutputFileSystemDirectory, mit der wir die Ausgabe in das angegebene Verzeichnis oder den angegebenen Ordner schreiben können.

Die zweite Option ist eine Klasseninstanz SaveOptions, die die Transformation des Objektmodells in das Zielformat steuert. Da wir LaTeX in PDF konvertieren, handelt es sich um die Klasseninstanz PdfSaveOptions.

Dann müssen wir eine Instanz der Klasse TeXJob erstellen. Wenn wir eine im Dateisystem gespeicherte LaTeX-Datei konvertieren möchten, verwenden wir diese Version des Konstruktors. Wir müssen den vollständigen Pfad zur Datei angeben. Andernfalls sucht die Engine im aktuellen Verzeichnis ( CurrentDirectory) danach und wird es höchstwahrscheinlich nicht finden. Dennoch können wir die Erweiterung weglassen, wenn unsere Datei die Erweiterung .tex hat. Die Engine wird es automatisch anhängen. Das zweite Argument des Konstruktors ist eine Klasseninstanz Device. Da wir LaTeX in PDF konvertieren, handelt es sich um eine PdfDevice-Klasseninstanz. Als letztes Argument übergeben wir die kürzlich vorbereiteten Konvertierungsoptionen.

Jetzt müssen Sie nur noch den Job ausführen.

Unabhängig davon, ob die Ausführung erfolgreich war oder nicht, ist das erste Ergebnis, das wir sehen, die Terminalausgabe. Im Erfolgsfall sieht es etwa so aus:

 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.

Weitere „Früchte“ der Engine-Arbeit finden wir in dem Ordner, den wir als Ausgabeverzeichnis angegeben haben. Dabei handelt es sich um die Transkriptdatei und, hier ist sie!, die Hauptausgabe-PDF-Datei.

Eine alternative Möglichkeit, die Hauptausgabe-PDF-Datei zu schreiben

Es gibt einen weiteren Konstruktor der Klasse PdfDevice, mit dem wir die resultierende PDF-Datei auf alternative Weise erhalten können.

 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    }

Die Datei any-name.pdf im angegebenen Verzeichnis ist unsere Hauptausgabe-PDF-Datei. Gleichzeitig finden wir im Gegensatz zu Bildausgabe keine PDF-Dateien in dem durch die Konvertierungsoptionen definierten Ausgabeverzeichnis. Ausnahme: any-name.pdf befindet sich (durch seinen Pfad) im selben Dateisystemverzeichnis, das der Option OutputWorkingDirectory mit OutputFileSystemDirectory zugewiesen ist.

Über Eingabemöglichkeiten

Falls unsere Haupteingabedatei Abhängigkeiten erfordert, beispielsweise Pakete, die nicht im grundlegenden LaTeX-System und den unterstützten Paketen enthalten sind, MÜSSEN wir die Option RequiredInputDirectory auf die gleiche Weise festlegen, wie wir die Option OutputWorkingDirectory festlegen. Option und legen Sie die Abhängigkeiten in diesem Verzeichnis ab. Abhängigkeiten können beliebig in Unterverzeichnissen organisiert werden. Falls wir unsere eigenen Dateien in den Schriftsatzprozess einbeziehen möchten, beispielsweise externe Grafikdateien, MÜSSEN wir auch das InputWorkingDirectory festlegen, indem wir den Pfad zum Speicherort verwenden, an dem diese Dateien gesammelt werden. Wir können die Haupteingabedatei auch irgendwo im Eingabeverzeichnis platzieren und den relativen Pfad in der Methode „run()“ angeben (oder überhaupt keinen Pfad angeben, wenn sich die Haupteingabedatei im Stammverzeichnis befindet). Hier finden Sie die Details zum Eingabeverzeichniskonzept in Aspose.TeX für C++ und den bereitgestellten Implementierungen.

Weitere TeX-Joboptionen werden hier besprochen.

Sie können sich auch die kostenlose LaTeX-zu-PDF-Konvertierung Web-App ansehen, die auf der Aspose.TeX for C++ API basiert.

Have any questions about Aspose.TeX?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.