Jak renderować LaTeX do PNG przy użyciu C++

Ten interesujący temat zawiera demonstrację, jak renderować LaTeX do PNG przy użyciu C++. Pliki LaTeX nazywamy również plikami .tex i można łatwo renderować LaTeX do formatu PNG w C++ za pomocą prostych właściwości i metod API. Jedną z zalet korzystania z tego przykładu jest to, że wywołania interfejsu API nie są zależne od żadnego innego oprogramowania ani narzędzi stron trzecich do ich wykonania.

Kroki renderowania LaTeX do PNG przy użyciu C++

  1. Zainstaluj Aspose.Tex.Cpp za pomocą narzędzia NuGet Package Manager
  2. Dołącz odniesienie do przestrzeni nazw Aspose::TeX, Aspose::TeX::IO i Aspose::TeX::Presentation::Image
  3. Utwórz instancję obiektu TeXOptions Class do konfiguracji ustawień
  4. Utwórz obiekt PngSaveOptions Class do zapisania obrazu LaTeX do formatu PNG
  5. Zainicjuj ImageDevice do renderowania
  6. Użyj TexJob do renderowania LaTeX-a do obrazu PNG

Dokumenty LaTeX są przeznaczone do celów naukowych i badawczych, które mogą być wykorzystywane przez użytkowników technicznych i zawierają informacje w postaci zwykłego tekstu. Aby wyeksportować obraz LaTeX do PNG w C++, najpierw utworzymy instancję klasy TeXOptions do konfiguracji ustawień obejmujących katalog wejściowy, katalog wyjściowy i opcje konsoli. W kolejnych krokach ustawimy właściwości PngSaveOptions, takie jak rozdzielczość obrazu. Na koniec zainicjalizujemy ImageDevice i używając TexJob renderujemy LaTeX do obrazu PNG przy użyciu C++.

Kod konwertujący LaTeX na PNG w C++

#pragma once
#include <system/text/encoding.h>
#include <system/io/text_writer.h>
#include <system/io/memory_stream.h>
#include <system/array.h>
#include <Aspose.TeX.Cpp/TeXOptions.h>
#include <Aspose.TeX.Cpp/TeXConfig.h>
#include <Aspose.TeX.Cpp/TeXJob.h>
#include <Aspose.TeX.Cpp/Presentation/SaveOptions.h>
#include <Aspose.TeX.Cpp/Presentation/Image/PngSaveOptions.h>
#include <Aspose.TeX.Cpp/Presentation/Image/ImageDevice.h>
#include <Aspose.TeX.Cpp/IO/OutputFileSystemDirectory.h>
#include <Aspose.TeX.Cpp/IO/OutputConsoleTerminal.h>
#include <Aspose.TeX.Cpp/IO/IOutputWorkingDirectory.h>
#include <Aspose.TeX.Cpp/IO/IOutputTerminal.h>
#include <Aspose.TeX.Cpp/IO/InputFileSystemDirectory.h>
#include <Aspose.TeX.Cpp/IO/InputConsoleTerminal.h>
#include <Aspose.TeX.Cpp/IO/IInputTerminal.h>
#include <cstdint>
#include <Aspose.TeX.Cpp/License.h>
using namespace Aspose::TeX;
using namespace Aspose::TeX::IO;
using namespace Aspose::TeX::Presentation::Image;
class TexToPngConverter{
public:
static void TexToPNGRendering()
{
// Initialize license object
System::SharedPtr<License> TexLicense = System::MakeObject<License>();
// Applying license for rendering PNG
TexLicense->SetLicense(u"Aspose.Total.NET.lic");
// Instantiate TeXOptions object for configuring settings
System::SharedPtr<TeXOptions> RenderingOptions = TeXOptions::ConsoleAppOptions(TeXConfig::ObjectTeX());
// Specify the job name.
RenderingOptions->set_JobName(u"stream-image-out");
// Specify the input file working directory.
RenderingOptions->set_InputWorkingDirectory(System::MakeObject<InputFileSystemDirectory>(u""));
// Specify the output file working directory.
RenderingOptions->set_OutputWorkingDirectory(System::MakeObject<OutputFileSystemDirectory>(u""));
// Setting the console input terminal
RenderingOptions->set_TerminalIn(System::MakeObject<InputConsoleTerminal>());
// Setting the console output terminal
RenderingOptions->set_TerminalOut(System::MakeObject<OutputConsoleTerminal>());
// Creating and specifying PngSaveOptions
System::SharedPtr<PngSaveOptions> ImageOptions = System::MakeObject<PngSaveOptions>();
ImageOptions->set_Resolution(300);
RenderingOptions->set_SaveOptions(ImageOptions);
// Instantiating ImageDevice for rendering
System::SharedPtr<ImageDevice> ImageDevise = System::MakeObject<ImageDevice>();
// Running TexJob for rendering to PNG
TeXJob::TeXJob(System::MakeObject<System::IO::MemoryStream>(System::Text::Encoding::get_ASCII()->
GetBytes(u"\\hrule height 10pt width 95pt\\vskip10pt\\hrule height 5pt")),
ImageDevise, RenderingOptions);
// During executoion, when the console prompts the input,
// Step 1: Type "ABC", press Enter
// Step 2: Type "\end" and press Enter again
// In order to view the ouptut and to look write.
RenderingOptions->get_TerminalOut()->get_Writer()->WriteLine();
// Alternatively, you can also get the images in form of array of byte arrays
// The 0th index belong to first page.
System::ArrayPtr<System::ArrayPtr<uint8_t>> result = ImageDevise->get_Result();
}
};

W tym temacie dowiedzieliśmy się, jak C++ tworzy obraz PNG z LaTeXa przy użyciu prostych wywołań API. Jeśli chcesz poznać inne funkcje, takie jak renderowanie plików MPP, zapoznaj się z artykułem na jak przekonwertować MPP na XPS za pomocą C++.

 Polski