Come eseguire il rendering di LaTeX in PNG usando C++

Questo interessante argomento fornisce una dimostrazione su come renderizzare da LaTeX a PNG utilizzando C++. Chiamiamo anche i file LaTeX come file .tex e uno può facilmente renderizzare LaTeX in PNG in C++ con semplici proprietà e metodi API. Un aspetto positivo dell’utilizzo di questo esempio è che le chiamate API non dipendono da nessun altro software applicativo o strumenti di terze parti per la loro esecuzione.

Passaggi per eseguire il rendering di LaTeX in PNG utilizzando C++

  1. Installa Aspose.Tex.Cpp utilizzando lo strumento Gestione pacchetti NuGet
  2. Includere riferimenti a Aspose::TeX, Aspose::TeX::IO e Aspose::TeX::Presentation::Image namespace
  3. Crea un’istanza dell’oggetto TeXOptions Class per l’impostazione delle configurazioni
  4. Crea un’istanza dell’oggetto PngSaveOptions Class per salvare un’immagine LaTeX in PNG
  5. Inizializza ImageDevice per il rendering
  6. Usa TexJob per il rendering di un’immagine da LaTeX a PNG

I documenti LaTeX sono pensati per scopi scientifici e di ricerca che possono essere utilizzati da utenti tecnici e contengono informazioni in formato testo normale. Per esportare un’immagine LaTeX in PNG in C++, creeremo prima un’istanza della classe TeXOptions per impostare le configurazioni che coinvolgono la directory di input, la directory di output e le opzioni della console. Nei passaggi successivi, imposteremo le proprietà PngSaveOptions come la risoluzione dell’immagine. Infine, inizializzeremo ImageDevice e, usando TexJob, renderemo LaTeX in un’immagine PNG usando C++.

Codice per convertire LaTeX in PNG in 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();
}
};

In questo argomento, abbiamo imparato come C++ crea un’immagine PNG da LaTeX usando semplici chiamate API. Se sei interessato ad apprendere altre funzionalità come il rendering di file MPP, fai riferimento all’articolo su come convertire MPP in XPS usando C++.

 Italiano