Eingabeschnittstelle von Aspose.TeX | Java
Formale Definitionen der I/O-Implementierung finden Sie unter Aspose.TeX für Java API-Referenz.
Das Konzept des Eingabeverzeichnisses
Da I/O-Grundelemente der TeX-Sprache nur Dateinamen verarbeiten können, definiert Aspose.TeX für Java 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 IInputWorkingDirectory bereit, die der Benutzer für seine eigenen Zwecke implementieren kann. Es bietet auch eigene Implementierungen, die weiter unten besprochen werden. Die Schnittstelle definiert die Methode getFile(), die den Datenstrom zurückgibt und den vollständigen Namen der Datei ermittelt, wobei als erstes Argument ein hypothetisch anderer Name verwendet wird, der tatsächlich der Zuordnungsschlüssel ist .
Dateieingabe vom Festplattendateisystem abrufen
So würden wir es machen:
1// Create conversion options instance.
2...
3// Specify a file system working directory for the input.
4options.setInputWorkingDirectory(new InputFileSystemDirectory(Utils.getInputDirectory()));
Dieser Anwendungsfall ist recht einfach, daher werden wir uns nicht lange damit befassen.
Dateieingabe aus einem ZIP-Archiv abrufen
Wir können die Eingabedateien auch in ein ZIP-Archiv legen und es als Eingabeverzeichnis betrachten. In diesem Fall sollten wir wie folgt vorgehen:
1// Open the stream for the ZIP archive that will serve as the input working directory.
2final Stream inZipStream = File.Open(Path.Combine(RunExamples.InputDirectory, "zip-in.zip"), FileMode.Open))
3{
4 // Create conversion options instance.
5 ...
6 // Specify a ZIP archive working directory for the input. You can also specify a path inside the archive.
7 options.setInputWorkingDirectory(new InputZipDirectory(inZipStream, "in"));
8} finally {
9 if (inZipStream != null)
10 inZipStream.close();
11}
Zuerst erstellen wir den Stream, der die ZIP-Datei enthält. Nachdem wir die Konvertierungsoptionen erstellt haben, legen wir dann die Option InputWorkingDirectory als Instanz der Klasse InputZipDirectory fest. Das zweite Argument des Konstruktors ist der Basispfad innerhalb des Archivs. Wenn wir möchten, dass das gesamte Archiv ein Eingabeverzeichnis ist, sollten wir die leere Zeichenfolge übergeben.
Das Konzept des Eingabeterminals
Denken wir nun daran, dass es auch den Terminaleingang gibt. In diesem Fall definiert Aspose.TeX für Java die allgemeine Schnittstelle IInputTerminal so, dass sie über zwei Methoden verfügt. Einer von ihnen gibt eine BufferedReader-Instanz zurück. Eine andere Methode gibt einen InputStream als zugrunde liegenden Stream zurück. Die bereitgestellten Implementierungen der Schnittstelle werden im Folgenden erläutert.
Terminaleingabe von der Konsole abrufen
Dazu müssen wir die Option TerminalIn als Instanz der Klasse InputConsoleTerminal festlegen.
1// Create conversion options instance.
2...
3// Specify the console as the input terminal.
4options.setTerminalIn(new InputConsoleTerminal()); // Default value. Arbitrary assignment.
Aber ehrlich gesagt ist dies der Standardwert der Option, es besteht also keine wirkliche Notwendigkeit, ihn anzugeben. Aus diesem Grund und solange es keine anderen Implementierungen gibt, dient dieser Abschnitt nur Demonstrationszwecken.
Wenn wir eine interaktive TeX-Datei (oder ein interaktives Skript) mit vorhersehbarem Verhalten haben, möchten wir theoretisch möglicherweise eine Version des Eingabeterminals implementieren, die ein ergänzendes Skript zur Beantwortung der Anforderungen der TeX-Engine enthält. Versuchen Sie es, wenn Sie Zeit haben!