Aspose.TeXの入力インターフェイス| Java

I/O実装の正式な定義については、Java API Referenceの Aspose.TeXを参照してください。

ファイルシステムと ZIP の例は hello-world.tex を hello-world.xps に組版します。inputDirectory に TeX ファイルを含むフォルダーを、outputDirectory に既存の出力フォルダーを指定します。ZIP 入力では、inputZip に in/hello-world.tex を含むアーカイブを指す java.nio.file.Path を指定します。 選択した例で使用する Aspose.TeX クラス、com.aspose.tex.rendering.XpsDevice、必要な java.io と java.nio.file のクラスをインポートします。呼び出し元のメソッドは例外を処理するか宣言する必要があります。評価版の制限を避けるため、 ライセンスガイドに従ってライセンスを適用してください。

入力ディレクトリの概念

Tex言語のI/O Primitivesはファイル名のみを扱うことができるため、Java Aspose.TeXは、ディレクトリを名前とデータのバルクのマッピングとして定義します。データの大部分は、ファイル、ストリーム、配列などであるはずです。APIにより、入力および出力作業ディレクトリを個別に指定できます。一般的な iinputworkingdirectoryインターフェイスを提供します。これは、ユーザーが独自の目的で実装できる。また、独自の実装も提供します。これについては、以下で説明します。インターフェイスは getFile()メソッドを定義します。これは、データストリームを返してファイルのフルネームを決定しますが、仮説的に異なる名前を最初の引数として使用します。実際、マッピングキーです。

ディスクファイルシステムからファイル入力を取得します

これが私たちがそれをする方法です:

 1// inputDirectory contains hello-world.tex; outputDirectory is an existing output folder.
 2TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectTeX());
 3InputFileSystemDirectory input = new InputFileSystemDirectory(inputDirectory);
 4OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
 5options.setInputWorkingDirectory(input);
 6options.setOutputWorkingDirectory(output);
 7options.setInteraction(Interaction.NonstopMode);
 8options.setTerminalOut(new OutputMemoryTerminal());
 9
10XpsDevice device = new XpsDevice();
11TeXJobResult result;
12try {
13    result = new TeXJob("hello-world", device, options).run();
14} finally {
15    device.dispose();
16    output.close();
17    input.close();
18}

このユースケースは非常に簡単なので、長い間それについては言及しません。

ZIPアーカイブからファイル入力を取得します

また、入力ファイルをZIPアーカイブに配置して、入力ディレクトリと見なすこともできます。この場合、次のように進める必要があります。

 1// Read hello-world.tex from the in/ folder of a ZIP archive.
 2// inputZip is a java.nio.file.Path; outputDirectory is an existing output folder.
 3TeXJobResult result;
 4try (InputStream zipStream = Files.newInputStream(inputZip)) {
 5    TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectTeX());
 6    InputZipDirectory input = new InputZipDirectory(zipStream, "in");
 7    OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
 8    options.setInputWorkingDirectory(input);
 9    options.setOutputWorkingDirectory(output);
10    options.setInteraction(Interaction.NonstopMode);
11    options.setTerminalOut(new OutputMemoryTerminal());
12    XpsDevice device = new XpsDevice();
13    try {
14        result = new TeXJob("hello-world", device, options).run();
15    } finally {
16        device.dispose();
17        output.close();
18        input.close();
19    }
20}

最初に、zipファイルを含むストリームを作成します。次に、変換オプションを作成した後、 inputzipdirectoryクラスのインスタンスになるように inputWorkingDirectoryオプションを設定します。コンストラクターの2番目の引数は、アーカイブ内のベースパスです。アーカイブ全体を入力ディレクトリにしたい場合は、空の文字列を渡す必要があります。 この例は TeX ジョブが終了するまで ZIP ストリームと入力ディレクトリを開いたままにし、その後に閉じます。対話なしで実行され、端末出力をメモリに保存します。

入力端子の概念

次に、端子入力もあることを覚えておいてください。これに関しては、Aspose.TeX for java一般 iinputterminalインターフェイスを2つのメソッドがあると定義します。そのうちの1人は BufferedReaderインスタンスを返します。別のメソッドは、 inputstreamを基礎となるストリームとして返します。インターフェイスの実装を以下で説明します。

コンソールから端子入力を取得します

これを行うには、 inputConsoleterminalクラスのインスタンスになるには、 Terminalinオプションを設定する必要があります。

1// Use the console for terminal input; this is also the default.
2TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectTeX());
3options.setTerminalIn(new InputConsoleTerminal());

InputConsoleTerminal はこのオプションのデフォルト値です。この例は端末の設定のみを示し、ジョブは実行しません。端末入力を要求するジョブには、ユーザー入力または独自の端末実装が必要です。上記のファイルシステムと ZIP の例は、完全な入力ファイルを使用して対話なしで実行されます。

理論的には、予測可能な動作を備えたインタラクティブなTEXファイル(またはスクリプト)がある場合、TEXエンジンの要求に応答するための補完的なスクリプトを含む入力端子のバージョンを実装することをお勧めします。時間があるときは手を試してみてください!