C++を使用してプログラムでTeXをPDFまたはXPSファイルに変換する

TeXファイルは、テキスト、記号、算術式を含むさまざまなドキュメントやブックを植字するために使用されます。さらに、これらのファイルは、PDFXPS、およびさまざまな画像形式などの出力を生成できます。この記事では、C++を使用してTeXファイルをXPSおよびPDF形式に変換する方法を学習します。

TeXをPDFおよびXPS形式に変換するためのC++API

Aspose.TeX for C++は、追加のソフトウェアをインストールしなくてもTeXファイルを操作するためのC++ライブラリです。 APIを使用すると、TeXファイルを植字し、XPSPDFPNGJPEGTIFF BMP。 APIは、NuGetからインストールするか、ダウンロードセクションから直接ダウンロードできます。

PM> Install-Package Aspose.TeX.Cpp

C++を使用してTeXをXPS形式に変換する

ほんの数行のコードでTeXファイルをXPS形式に変換できます。これを実現するには、以下の手順に従ってください。

次のサンプルコードは、C++を使用してTeXファイルをXPS形式に変換する方法を示しています。

// ObjectTeXエンジン拡張機能でデフォルトのObjectTeX形式の植字オプションを作成します。
System::SharedPtr<TeXOptions> options = TeXOptions::ConsoleAppOptions(TeXConfig::ObjectTeX());

// 入力するファイルシステムの作業ディレクトリを指定します。
options->set_InputWorkingDirectory(System::MakeObject<InputFileSystemDirectory>(u"SourceDirectory"));

// 出力するファイルシステムの作業ディレクトリを指定します。
options->set_OutputWorkingDirectory(System::MakeObject<OutputFileSystemDirectory>(u"OutputDirectory"));

// コンソールを出力端子として指定します。
options->set_TerminalOut(System::MakeObject<Aspose::TeX::IO::OutputConsoleTerminal>());
// デフォルト。指定する必要はありません。
// 端末出力をコンソールに書きたくない場合は、出力端末としてメモリストリームを指定します。
//options.TerminalOut = new OutputMemoryTerminal();

// 組版を実行します。
Aspose::TeX::TeX::Typeset(u"hello-world", System::MakeObject<XpsDevice>(), options);

// 書き込みを確認するためのさらなる出力について。
options->get_TerminalOut()->get_Writer()->WriteLine();

C++を使用したTeXからPDF形式への変換

TeXファイルをPDF形式に変換する手順は次のとおりです。

次のサンプルコードは、C++を使用してTeXファイルをPDF形式に変換する方法を示しています。

// ObjectTeXエンジン拡張機能でデフォルトのObjectTeX形式の植字オプションを作成します。
System::SharedPtr<TeXOptions> options = TeXOptions::ConsoleAppOptions(TeXConfig::ObjectTeX());

// 入力するファイルシステムの作業ディレクトリを指定します。
options->set_InputWorkingDirectory(System::MakeObject<InputFileSystemDirectory>(u"SourceDirectory"));

// 出力するファイルシステムの作業ディレクトリを指定します。
options->set_OutputWorkingDirectory(System::MakeObject<OutputFileSystemDirectory>(u"OutputDirectory"));

// コンソールを出力端子として指定します。
options->set_TerminalOut(System::MakeObject<Aspose::TeX::IO::OutputConsoleTerminal>());
// デフォルト。指定する必要はありません。
// 端末出力をコンソールに書きたくない場合は、出力端末としてメモリストリームを指定します。
//options.TerminalOut = new OutputMemoryTerminal();

// PdfSaveOptionsを設定します
options->set_SaveOptions(System::MakeObject<PdfSaveOptions>());

// 組版を実行します。
Aspose::TeX::TeX::Typeset(u"hello-world", System::MakeObject<PdfDevice>(), options);

// 書き込みを確認するためのさらなる出力について。
options->get_TerminalOut()->get_Writer()->WriteLine();

C++を使用してTeXZIPディレクトリをPDFZIPディレクトリに変換します

複数のTeXファイルを一度にPDF形式に変換するために、TeXファイルをZIPアーカイブに追加し、それらをzip形式のPDFファイルに変換することができます。これを実現するための手順は次のとおりです。

次のサンプルコードは、C++を使用してTeXZIPアーカイブをPDFZIPアーカイブに変換する方法を示しています。

// ソースzipファイルをストリームで開きます
System::SharedPtr<System::IO::Stream> inZipStream = System::IO::File::Open(System::IO::Path::Combine(u"SourceDirectory", u"zip-in.zip"), System::IO::FileMode::Open);
// 'using'ステートメントでリソースをクリアしています
System::Details::DisposeGuard<1> __dispose_guard_1({ inZipStream });
// ------------------------------------------

try {
    // 出力zipファイルをストリームで開きます
    System::SharedPtr<System::IO::Stream> outZipStream = System::IO::File::Open(System::IO::Path::Combine(u"OutputDirectory", u"zip-pdf-out.zip"), System::IO::FileMode::Create);
    // 'using'ステートメントでリソースをクリアしています
    System::Details::DisposeGuard<1> __dispose_guard_0({ outZipStream });
    // ------------------------------------------

    try
    {
        // ObjectTeXエンジン拡張機能でデフォルトのObjectTeX形式の植字オプションを作成します。
        System::SharedPtr<TeXOptions> options = TeXOptions::ConsoleAppOptions(TeXConfig::ObjectTeX());

        // 入力用のZIPアーカイブ作業ディレクトリを指定します。
        options->set_InputWorkingDirectory(System::MakeObject<InputZipDirectory>(inZipStream, u"in"));

        // 出力用のZIPアーカイブ作業ディレクトリを指定します。
        options->set_OutputWorkingDirectory(System::MakeObject<OutputZipDirectory>(outZipStream));

        // コンソールを出力端子として指定します。
        options->set_TerminalOut(System::MakeObject<OutputConsoleTerminal>());
        // デフォルト。指定する必要はありません。

        // 保存オプションを作成して指定します。
        options->set_SaveOptions(System::MakeObject<PdfSaveOptions>());

        // 組版を実行します。
        Aspose::TeX::TeX::Typeset(u"hello-world", System::MakeObject<PdfDevice>(), options);

        // 結果として出力が書き込みに見えるようにします。 
        options->get_TerminalOut()->get_Writer()->WriteLine();

        // 出力ZIPアーカイブを完成させます。
        (System::DynamicCast<Aspose::TeX::IO::OutputZipDirectory>(options->get_OutputWorkingDirectory()))->Finish();
    }
    catch (...)
    {
        __dispose_guard_0.SetCurrentException(std::current_exception());
    }
}
catch (...)
{
    __dispose_guard_1.SetCurrentException(std::current_exception());
}

無料ライセンスを取得する

無料の一時ライセンスをリクエストすることで、評価の制限なしにAPIを試すことができます。

結論

この記事では、C++を使用してTeXファイルをXPSおよびPDF形式に変換する方法を学習しました。さらに、ZIPアーカイブ内のTeXファイルをzip形式のPDFファイルに変換する方法を学びました。 Aspose.TeX for C++は、TeXファイルを操作するための多くの追加機能を提供します。 公式ドキュメントにアクセスすると、APIの詳細を調べることができます。ご不明な点がございましたら、無料サポートフォーラムまでお気軽にお問い合わせください。

関連項目