ラテックスからPDF | .NET経由でPython用のAspose.TeX

ラテックスをPDFに変換します

次に、ラテックスをPDF形式に深く変換するための最も簡単なアプローチを提供するPythonコードを調べてみましょう。

ASPOSE_TEX_INPUT_FILE に LaTeX ファイル、ASPOSE_TEX_OUTPUT_DIR に出力ディレクトリを指定するか、例のパスを編集してください。既定値は hello-world.ltx と output です。事前にライセンスを適用してください。追加の入力ファイルはメイン文書と同じディレクトリから読み込まれ、処理は対話入力なしで実行されます。 ライセンス

 1# Convert LaTeX to PDF.
 2import os
 3from pathlib import Path
 4from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
 5from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
 6from aspose.tex.presentation.pdf import PdfDevice, PdfSaveOptions
 7
 8# Set these paths to your LaTeX document and output directory.
 9input_file = Path(os.environ.get("ASPOSE_TEX_INPUT_FILE", "hello-world.ltx")).resolve()
10output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
11if not input_file.is_file():
12    raise FileNotFoundError(input_file)
13output_dir.mkdir(parents=True, exist_ok=True)
14
15# Use the Object LaTeX format and resolve additional inputs beside the main file.
16options = TeXOptions.console_app_options(TeXConfig.object_latex)
17options.input_working_directory = InputFileSystemDirectory(str(input_file.parent))
18options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
19options.interaction = Interaction.NONSTOP_MODE
20options.terminal_out = OutputMemoryTerminal()
21options.save_options = PdfSaveOptions()
22device = PdfDevice()
23job_result = TeXJob(str(input_file), device, options).run()

まず、 Texoptionsクラスのインスタンスを作成する必要があります。 console_app_options() メソッドはこれを達成する唯一の静的メソッドです。そのため、その名前を心配しないでください。この方法では、 texconfigクラスの object_latexインスタンスを使用します。これは、 latexファイルを変換するのに最適です。この構成は、オブジェクトTex Engineにオブジェクトラテックス形式をロードし、ラテックスファイルを処理するように指示します。オブジェクトラテックス形式は、 LaTex形式と本質的に同じですが、 Object Tex固有のプリミティブを使用してページメトリックを定義します。

指定する必要がある最初のオプションは output_working_directoryです。これは、TEX出力が保存される場所を決定します。必要に応じて、 Aspose.TeXの出力ディレクトリの概念の詳細情報を見つけることができます。この特定のケースでは、 outputFilesSystemDirectoryクラスを使用して、出力を指定されたディレクトリまたはフォルダーに書き込むことができます。

2番目のオプションには、 saveoptionsクラスのインスタンスが必要であり、 オブジェクトモデルが目的の形式に変換される方法を決定します。私たちの場合、ラテックスをPDFに変換しているため、 pdfsaveoptionsクラスのインスタンスを指します。

ファイルシステムに保存されているラテックスファイルを変換するには、ファイルのフルパスをパラメーターとして使用する コンストラクター を使用して Texjobクラスのインスタンスを作成する必要があります。フルパスを指定しない場合、エンジンは現在のディレクトリ内のファイル(スクリプトのワーキングディレクトリ)を探し、それを見つけられない場合があります。ただし、エンジンが自動的に追加されるため、ファイルに.tex拡張機能がある場合、拡張機能を省略できます。コンストラクターの2番目の引数は、 デバイスクラスのインスタンスです。私たちの場合、ラテックスをPDFに変換しているため、 PDFDeviceクラスのインスタンスです。最後に、最近準備された変換オプションを最後の引数として渡します。

さて、残っているのは、仕事を 実行することです。

この例では端末出力を OutputMemoryTerminal に保存します。出力ディレクトリには .log ファイルも作成されます。変換が成功すると、ログは次のようになります。バージョン情報は異なる場合があります。

 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.

出力ディレクトリとして指定したフォルダーには、トランスクリプトファイルがあります。

メイン出力PDFファイルを書き込む代替方法

 1# Convert LaTeX to PDF using an explicitly named binary output stream.
 2import os
 3from pathlib import Path
 4from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
 5from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
 6from aspose.tex.presentation.pdf import PdfDevice, PdfSaveOptions
 7
 8# Set these paths to your LaTeX document and output directory.
 9input_file = Path(os.environ.get("ASPOSE_TEX_INPUT_FILE", "hello-world.ltx")).resolve()
10output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
11if not input_file.is_file():
12    raise FileNotFoundError(input_file)
13output_dir.mkdir(parents=True, exist_ok=True)
14
15# Use the Object LaTeX format and resolve additional inputs beside the main file.
16options = TeXOptions.console_app_options(TeXConfig.object_latex)
17options.input_working_directory = InputFileSystemDirectory(str(input_file.parent))
18options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
19options.interaction = Interaction.NONSTOP_MODE
20options.terminal_out = OutputMemoryTerminal()
21options.save_options = PdfSaveOptions()
22
23# Supply a binary stream to choose the output filename.
24with (output_dir / "any-name.pdf").open("wb") as output_stream:
25    device = PdfDevice(output_stream)
26    job_result = TeXJob(str(input_file), device, options).run()

バイナリストリームは、設定された出力ディレクトリに any-name.pdf を書き込みます。既定名の追加 PDF ファイルは作成されません。補助ファイルとログは引き続き output_working_directory に保存されます。

入力オプションについて

メインの入力ファイルに、基本的なラテックスシステムに含まれていないパッケージやサポートされているパッケージなどの依存関係が必要な場合、 reburce_input_directoryオプションを * output_working_directory *オプションを設定し、そのディレクトリに依存関係を配置する必要があります。依存関係は、必要に応じてサブディレクトリで編成できます。さらに、外部グラフィックファイルなどの版形設定プロセスに含める独自のファイルがある場合は、 input_working_directoryを設定する必要があります。また、入力ディレクトリ内にメイン入力ファイルを配置し、 TeXJob コンストラクターに相対パスを指定したり、メインの入力ファイルがルートにある場合はまったくパスを指定したりすることもできます。 Python の Aspose.TeXの入力ディレクトリの概念の詳細および提供された実装については、 こちらを参照してください。

他のTexジョブオプションも議論されています。

また、 Aspose.TeX for .NET API を使用して開発された無料の LaTeX から PDF への変換用 Web アプリ を調べることもできます。