使用 ZIP I/O 进行 TeX 排版
使用 ZIP 存档作为输入和输出将 TeX 转换为 PDF。适用于 C++ 的 API
TeX 语言是一种排版工具,允许您创建专业的文档,而无需担心格式问题。使用 TeX 时,您输入包含文档文本片段的纯文本以及控制输出的命令。在输出端,您将获得所需(指定)格式的格式化文件。为了更好地理解 TeX 的输入和输出,请参阅 TeX 文档 。
TeX 也是一个强大、先进的系统,但在学术和科学界以外并未得到广泛使用。另一方面,PDF 是一种便携式格式,可以在大多数设备上轻松查看,并且被更广泛地接受。每台设备和大多数现代浏览器都具备阅读 PDF 的能力。将 TeX 转换为 PDF 可以让文档与更广泛的受众分享,并为那些没有专业软件的人提供更易于访问的格式。此外,与 TeX 相比,PDF 具有多项优势,例如更好的字体渲染、支持交互性以及更容易控制页面大小和布局。
下面的 C++ 代码对 TeX 文件进行排版,创建一个 PDF,然后将其保存到本地文件系统上的 ZIP 存档中。要完成此任务,请使用 Aspose.TeX API for C++,这是一款功能丰富、功能强大且易于使用的文档处理和转换工具。要安装该 API,请打开 NuGet 包管理器并搜索 Aspose.TeX.Cpp。或者,您也可以在包管理器控制台中使用以下命令:
Package Manager Console Command
PM> Install-Package Aspose.TeX.Cpp
在下面的代码中,TeX 从 ZIP 存档中获取主输入文件,将其转换为 PDF,并写入另一个 ZIP 存档。请遵循以下指南:
- 打开包含 ZIP 存档的流,该存档将用作输入工作目录。您可以选择指定存档中的子目录。否则,将在整个存档中搜索文件。
- 为用作输出工作目录的新 ZIP 存档创建文件流。
- 在 Object TeX 引擎扩展上为 Object TeX 格式创建排版选项。
- 使用 InputZipDirectory 和 OutputZipDirectory 类为输入和输出指定 ZIP 存档工作目录。
- 指定控制台作为输出终端。
- 使用 PdfSaveOptions 类为排版选项指定保存选项。
- 实例化 TeXJob 类,传递主输入文件名、新创建的 PdfDevice 对象和排版选项作为参数。通过调用 Run() 方法运行转换。
- 完成输出 ZIP 存档。
C++ 代码示例:通过 ZIP 输入和输出将 TeX 转换为 PDF
using Aspose::TeX::IO;
using Aspose::TeX::Presentation::Pdf;// Open a stream on a ZIP archive that will serve as the input working directory.
System::SharedPtr<System::IO::Stream> inZipStream =
System::IO::File::Open(System::IO::Path::Combine(RunExamples::InputDirectory, u"zip-in.zip"), System::IO::FileMode::Open);
// Clearing resources under the 'using' statement
System::Details::DisposeGuard<1> __dispose_guard_1({ inZipStream });
try
{
System::SharedPtr<System::IO::Stream> outZipStream =
System::IO::File::Open(System::IO::Path::Combine(RunExamples::OutputDirectory, u"zip-pdf-out.zip"), System::IO::FileMode::Create);
// Clearing resources under the 'using' statement
System::Details::DisposeGuard<1> __dispose_guard_0({ outZipStream });
try
{
// Create typesetting options for the default Object TeX format on the Object TeX engine extension.
System::SharedPtr<TeXOptions> options = TeXOptions::ConsoleAppOptions(TeXConfig::ObjectTeX());
// Specify a ZIP archive working directory for the input.
options->set_InputWorkingDirectory(System::MakeObject<InputZipDirectory>(inZipStream, u"in"));
// Specify a ZIP archive working directory for the output.
options->set_OutputWorkingDirectory(System::MakeObject<OutputZipDirectory>(outZipStream));
// Specify console as output terminal.
options->set_TerminalOut(System::MakeObject<OutputConsoleTerminal>());
// Create and specify saving options.
options->set_SaveOptions(System::MakeObject<PdfSaveOptions>());
// Run the typesetting job.
System::MakeObject<Aspose::TeX::TeXJob>(u"hello-world", System::MakeObject<PdfDevice>(), options)->Run();
// Finalize the output ZIP archive.
(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());
}常问问题
1. 我可以使用 ZIP 文件作为输入来排版 TeX 文档吗?
Aspose.TeX 支持从 ZIP 文件等压缩档案中读取 TeX 源文件。您可以将所有必要的文件(包括 TeX 源文件、图像和其他资源)包含在 ZIP 存档中,然后指定 ZIP 文件作为 LaTeX 编译器的输入。这可以方便地组织和分发 LaTeX 项目,特别是在处理具有多个依赖项的大型或复杂文档时。
2. 使用 ZIP 文件排版 TeX 文档有什么优点吗?
是的,使用 ZIP 文件排版 TeX 文档有几个优点。首先,ZIP 文件提供了一种便捷的方法来将与 LaTeX 项目相关的多个文件(包括 TeX 源文件、参考书目、图像和样式文件)打包和组织到单个压缩存档中。这简化了 LaTeX 文档的分发和共享,尤其是在与他人协作或在线共享项目时。
3. 如何排版 TeX 文件?
要使用 Aspose.TeX API 解决方案排版 TeX 文件,您需要基于 Object TeX 引擎扩展创建 Object TeX 或 Object LaTeX 格式的转换选项。然后指定输出的文件系统工作目录。最后,创建 TeXJob 类的实例并使用 TeXJob.Run() 方法运行排版过程。
TeX What is TeX File Format
TeX 是一种排版系统和编程语言,用于创建高质量文档,尤其是数学公式。TeX 源文件为纯文本,由 TeX 引擎(如 pdfTeX、XeTeX、LuaTeX)处理,可生成 PDF、DVI 等输出。