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

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

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

出力ディレクトリの概念

Tex言語のI/O Primitivesはファイル名のみを扱うことができるため、Aspose.TeXは、ディレクトリを名前とデータのバルクのマッピングとして定義します。データの大部分は、ファイル、ストリーム、配列などであるはずです。APIにより、入力および出力作業ディレクトリを個別に指定できます。一般的な ioutputworkingdirectoryの出力のインターフェイスを提供します。これは、ユーザーが独自の目的で実装できます。また、独自の実装も提供します。これについては、以下で説明します。インターフェイスは iinputworkingdirectoryを拡張します。エンジンが最初にファイルを作成して書き込み、次に読み戻すことができるためです。インターフェイス独自のメソッド getOuputfile()は、 getFile()によって返された読み取りに読み取るストリームとは対照的に、ストリームを返して書き込みます。

ディスクファイルシステムへのファイル出力の書き込み

上記で述べたように、 OutputWorkingDirectory の最も一般的な値は、 OutputFileSystemDirectory クラスのインスタンスである可能性があります。

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

 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アーカイブへのファイル出力の書き込み

また、ファイル(またはストリーム)を作成し、TexエンジンにZIPアーカイブとして使用して出力ファイルを保存することもできます。ここにあります:

 1// Store the XPS document and TeX transcript in a ZIP archive.
 2// inputDirectory contains hello-world.tex; outputZip is the java.nio.file.Path to create.
 3TeXJobResult result;
 4try (OutputStream zipStream = Files.newOutputStream(outputZip)) {
 5    TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectTeX());
 6    InputFileSystemDirectory input = new InputFileSystemDirectory(inputDirectory);
 7    OutputZipDirectory output = new OutputZipDirectory(zipStream);
 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        // Finalize the archive while its underlying stream is still open.
16        output.finish();
17    } finally {
18        device.dispose();
19        output.close();
20        input.close();
21    }
22}

まず、zipファイルの出力ストリームを作成します。次に、変換オプションを作成した後、 outputzipdirectoryクラスのインスタンスになるように outputworkingdirectoryオプションを設定します。 この例は hello-world.xps と hello-world.log をアーカイブに保存します。ジョブ終了後、基になるストリームを閉じる前に出力ディレクトリの finish() を呼び出します。例ではジョブが終了するまでストリームと作業ディレクトリを開いたままにし、その後に閉じます。

出力端子の概念

出力には別の重要な部分があります—端子出力。これに関しては、Aspose.TeX for java一般 ioutputterminalインターフェイスを2つのメソッドがあると定義します。そのうちの1人は BufferedWriterインスタンスを返します。別のものは、 outputStreamインスタンスを基礎となるストリームとして返します。インターフェイスの実装を以下で説明します。

コンソールへの端子出力の書き込み

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

 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);
 8// This is also the default output terminal.
 9options.setTerminalOut(new OutputConsoleTerminal());
10
11XpsDevice device = new XpsDevice();
12TeXJobResult result;
13try {
14    result = new TeXJob("hello-world", device, options).run();
15} finally {
16    device.dispose();
17    output.close();
18    input.close();
19}

OutputConsoleTerminal はこのオプションのデフォルト値です。この例では明示的に選択し、変換中の端末出力をコンソールに書き込みます。4 つの例はすべて対話なしで実行され、ファイルシステムと ZIP の例は端末出力をメモリに保存します。

ファイルへの端子出力の書き込み

入力端子とは異なり、Java for Java **は ioutputterminalの実装を提供します。これにより、出力ディレクトリのファイルに端子出力を書き込むことができます。

 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);
 8// Set the output directory first: the terminal writes <job_name>.trm there.
 9options.setTerminalOut(new OutputFileTerminal(options.getOutputWorkingDirectory()));
10
11XpsDevice device = new XpsDevice();
12TeXJobResult result;
13try {
14    result = new TeXJob("hello-world", device, options).run();
15} finally {
16    device.dispose();
17    output.close();
18    input.close();
19}

OutputFileTerminal を作成する前に出力作業ディレクトリを設定します。端末出力は、そのディレクトリの <job_name>.trm(この例では hello-world.trm)に書き込まれます。この端末ファイルは TeX のログ hello-world.log とは別です。端末出力を別の場所に書き込むには、別の IOutputWorkingDirectory 実装をコンストラクターに渡します。