使用 C++ 以编程方式将 TeX 转换为 PDF 或 XPS 文件

TeX 文件用于排版包含文本、符号和算术表达式的不同文档和书籍。此外,这些文件可以生成 PDFXPS 和各种图像格式等输出。在本文中,您将学习如何使用 C++ 将 TeX 文件转换为 XPS 和 PDF 格式。

用于将 TeX 转换为 PDF 和 XPS 格式的 C++ API

Aspose.TeX for C++ 是一个 C++ 库,用于处理 TeX 文件,无需安装任何其他软件。该 API 允许您排版 TeX 文件并以 XPSPDFPNGJPEGTIFF BMP。您可以通过 NuGet 安装 API,也可以直接从 Downloads 部分下载。

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++ 将 TeX ZIP 目录转换为 PDF ZIP 目录

为了一次性将多个 TeX 文件转换为 PDF 格式,您可以将 TeX 文件添加到 ZIP 存档并将它们转换为压缩的 PDF 文件。以下是实现此目的的步骤。

以下示例代码显示了如何使用 C++ 将 TeX ZIP 存档转换为 PDF ZIP 存档。

// 在流中打开源 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);
// 在“使用”语句下清除资源
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);
    // 在“使用”语句下清除资源
    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 文件转换为压缩的 PDF 文件。 Aspose.TeX for C++ 为处理 TeX 文件提供了许多附加功能。您可以通过访问 官方文档 来详细探索 API。如有任何问题,请随时通过我们的 免费支持论坛 与我们联系。

也可以看看