Die Ausgabeschnittstelle von Aspose.TeX | C++

Formale Definitionen der I/O-Implementierung finden Sie in Aspose.TeX für C++ API-Referenz.

Das Konzept des Ausgabeverzeichnisses

Da I/O-Grundelemente der TeX-Sprache nur Dateinamen verarbeiten können, definiert Aspose.TeX ein Verzeichnis als Zuordnung zwischen Namen und Datenmengen. Die Datenmengen sollen Dateien, Streams, Arrays oder was auch immer sein. Mit der API können wir die Eingabe- und Ausgabearbeitsverzeichnisse separat angeben. Es stellt die allgemeine Schnittstelle IOutputWorkingDirectory für die Ausgabe bereit, die der Benutzer für seine eigenen Zwecke implementieren kann. Es bietet auch eigene Implementierungen, die weiter unten besprochen werden. Die Schnittstelle erweitert IInputWorkingDirectory, da die Engine zunächst eine Datei erstellen und schreiben und diese dann zurücklesen kann. Die eigene Methode der Schnittstelle GetOutputFile() gibt den Stream zurück, in den geschrieben werden soll, im Gegensatz zu dem Stream zum Lesen, der von GetFile() zurückgegeben wird.

Schreiben der Dateiausgabe in das Festplattendateisystem

Wie wir oben erwähnt haben, wäre der häufigste Wert für OutputDirectory wahrscheinlich eine Instanz der Klasse OutputFileSystemDirectory.

So würden wir es einstellen:

1// Create conversion options instance.
2...
3// Specify a file system working directory for the output.
4options->set_OutputWorkingDirectory(System::MakeObject<OutputFileSystemDirectory>(RunExamples::OutputDirectory));

Dieser Anwendungsfall ist recht einfach, sodass Sie sich nicht mehr darauf konzentrieren müssen.

Dateiausgabe in ein ZIP-Archiv schreiben

Wir können auch eine Datei (oder einen Stream) erstellen und diese von der TeX-Engine als ZIP-Archiv zum Speichern der Ausgabedateien verwenden lassen. Hier ist es:

1    // Open the stream for the ZIP archive that will serve as the output working directory.
2    System::SharedPtr<System::IO::Stream> outZipStream = System::IO::File::Open(System::IO::Path::Combine(RunExamples::OutputDirectory, u"zip-pdf-out.zip"), System::IO::FileMode::Create);
3
4    // Create conversion options instance.
5    ...
6    // Specify a ZIP archive working directory for the output.
7    options->set_OutputWorkingDirectory(System::MakeObject<OutputZipDirectory>(outZipStream));

Zuerst erstellen wir einen Ausgabestream für die ZIP-Datei. Nachdem wir die Konvertierungsoptionen erstellt haben, legen wir dann die Option OutputWorkingDirectory als Instanz der Klasse OutputZipDirectory fest.

Das Konzept des Ausgabeterminals

Es gibt noch einen weiteren wichtigen Teil der Ausgabe: die Terminalausgabe. In diesem Fall definiert Aspose.TeX für C++ die allgemeine Schnittstelle IOutputTerminal mit nur einer Eigenschaft, die eine TextWriter-Implementierungsinstanz zurückgibt. Die bereitgestellten Implementierungen werden im Folgenden erläutert.

Schreiben der Terminalausgabe in die Konsole

Dazu müssen wir die Option TerminalOut als Instanz der Klasse OutputConsoleTerminal festlegen.

1// Create conversion options instance.
2...
3// Specify the console as the output terminal.
4options->set_TerminalOut(System::MakeObject<OutputConsoleTerminal>()); // Default. No need to specify.

Auch hier handelt es sich um den Standardwert der Option, sodass keine wirkliche Notwendigkeit besteht, ihn anzugeben. Aus diesem Grund dient dieser Abschnitt nur zu Demonstrationszwecken.

Terminalausgabe in eine Datei schreiben

Im Gegensatz zum Eingabeterminal bietet Aspose.TeX für C++ eine Implementierung von IOutputTerminal, die es uns ermöglicht, die Terminalausgabe in eine Datei in einem Ausgabeverzeichnis zu schreiben.

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->set_TerminalOut(System::MakeObject<OutputFileTerminal>(options->get_OutputWorkingDirectory()));

Hier bitten wir die TeX-Engine, die Terminalausgabe in die Datei mit dem Namen <job_name>.trm zu schreiben, die im selben Ausgabeverzeichnis gespeichert wird, das wir für den Rest der Ausgabe angegeben haben. Dies ist jedoch nicht notwendig. Wir könnten genauso gut jede andere Instanz einer beliebigen Implementierung von IOutputTerminal an den Konstruktor übergeben.

Have any questions about Aspose.TeX?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.