Converti TeX in file PDF o XPS in modo programmatico usando C++

I file TeX vengono utilizzati per comporre diversi documenti e libri contenenti testo, simboli ed espressioni aritmetiche. Inoltre, questi file possono generare output come PDF, XPS e vari formati di immagine. In questo articolo imparerai come convertire i file TeX in formato XPS e PDF usando C++.

API C++ per convertire TeX in formato PDF e XPS

Aspose.TeX for C++ è una libreria C++ per lavorare con i file TeX senza richiedere l’installazione di alcun software aggiuntivo. L’API consente di comporre file TeX e generare output in formati come XPS, PDF, PNG, JPEG, TIFF, BMP. Puoi installare l’API tramite NuGet o scaricarla direttamente dalla sezione Download.

PM> Install-Package Aspose.TeX.Cpp

Converti TeX in formato XPS usando C++

Puoi convertire i file TeX in formato XPS in poche righe di codice. Per raggiungere questo obiettivo, seguire i passaggi indicati di seguito.

Il codice di esempio seguente mostra come convertire un file TeX in formato XPS usando C++.

// Crea opzioni di composizione per il formato ObjectTeX predefinito sull'estensione del motore ObjectTeX.
System::SharedPtr<TeXOptions> options = TeXOptions::ConsoleAppOptions(TeXConfig::ObjectTeX());

// Specificare una directory di lavoro del file system per l'input.
options->set_InputWorkingDirectory(System::MakeObject<InputFileSystemDirectory>(u"SourceDirectory"));

// Specificare una directory di lavoro del file system per l'output.
options->set_OutputWorkingDirectory(System::MakeObject<OutputFileSystemDirectory>(u"OutputDirectory"));

// Specificare la console come terminale di output.
options->set_TerminalOut(System::MakeObject<Aspose::TeX::IO::OutputConsoleTerminal>());
// Predefinito. Non c'è bisogno di specificare.
// Specificare il flusso di memoria come terminale di output, se non si desidera che l'output del terminale venga scritto sulla console.
//options.TerminalOut = new OutputMemoryTerminal();

// Esegui la composizione.
Aspose::TeX::TeX::Typeset(u"hello-world", System::MakeObject<XpsDevice>(), options);

// Per ulteriore output per guardare, scrivere.
options->get_TerminalOut()->get_Writer()->WriteLine();

Conversione di TeX in formato PDF utilizzando C++

Di seguito sono riportati i passaggi per convertire i file TeX in formato PDF.

Il codice di esempio seguente mostra come convertire un file TeX in formato PDF utilizzando C++.

// Crea opzioni di composizione per il formato ObjectTeX predefinito sull'estensione del motore ObjectTeX.
System::SharedPtr<TeXOptions> options = TeXOptions::ConsoleAppOptions(TeXConfig::ObjectTeX());

// Specificare una directory di lavoro del file system per l'input.
options->set_InputWorkingDirectory(System::MakeObject<InputFileSystemDirectory>(u"SourceDirectory"));

// Specificare una directory di lavoro del file system per l'output.
options->set_OutputWorkingDirectory(System::MakeObject<OutputFileSystemDirectory>(u"OutputDirectory"));

// Specificare la console come terminale di output.
options->set_TerminalOut(System::MakeObject<Aspose::TeX::IO::OutputConsoleTerminal>());
// Predefinito. Non c'è bisogno di specificare.
// Specificare il flusso di memoria come terminale di output, se non si desidera che l'output del terminale venga scritto sulla console.
//options.TerminalOut = new OutputMemoryTerminal();

// Imposta PdfSaveOptions
options->set_SaveOptions(System::MakeObject<PdfSaveOptions>());

// Esegui la composizione.
Aspose::TeX::TeX::Typeset(u"hello-world", System::MakeObject<PdfDevice>(), options);

// Per ulteriore output per guardare, scrivere.
options->get_TerminalOut()->get_Writer()->WriteLine();

Converti la directory TeX ZIP in una directory ZIP PDF usando C++

Per convertire più file TeX in formato PDF in una volta sola, puoi aggiungere i file TeX a un archivio ZIP e convertirli in file PDF compressi. Di seguito sono riportati i passaggi per raggiungere questo obiettivo.

Il codice di esempio seguente mostra come convertire l’archivio ZIP TeX in un archivio ZIP PDF utilizzando C++.

// Apri il file zip di origine in un flusso
System::SharedPtr<System::IO::Stream> inZipStream = System::IO::File::Open(System::IO::Path::Combine(u"SourceDirectory", u"zip-in.zip"), System::IO::FileMode::Open);
// Cancellazione delle risorse nella dichiarazione "utilizzo".
System::Details::DisposeGuard<1> __dispose_guard_1({ inZipStream });
// --------------------------------------------

try {
    // Apri il file zip di output in un flusso
    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);
    // Cancellazione delle risorse nella dichiarazione "utilizzo".
    System::Details::DisposeGuard<1> __dispose_guard_0({ outZipStream });
    // --------------------------------------------

    try
    {
        // Crea opzioni di composizione per il formato ObjectTeX predefinito sull'estensione del motore ObjectTeX.
        System::SharedPtr<TeXOptions> options = TeXOptions::ConsoleAppOptions(TeXConfig::ObjectTeX());

        // Specificare una directory di lavoro dell'archivio ZIP per l'input.
        options->set_InputWorkingDirectory(System::MakeObject<InputZipDirectory>(inZipStream, u"in"));

        // Specificare una directory di lavoro dell'archivio ZIP per l'output.
        options->set_OutputWorkingDirectory(System::MakeObject<OutputZipDirectory>(outZipStream));

        // Specificare la console come terminale di output.
        options->set_TerminalOut(System::MakeObject<OutputConsoleTerminal>());
        // Predefinito. Non è necessario specificare.

        // Crea e specifica le opzioni di salvataggio.
        options->set_SaveOptions(System::MakeObject<PdfSaveOptions>());

        // Esegui la composizione.
        Aspose::TeX::TeX::Typeset(u"hello-world", System::MakeObject<PdfDevice>(), options);

        // Affinché l'output risultante appaia in scrittura. 
        options->get_TerminalOut()->get_Writer()->WriteLine();

        // Finalizzare l'archivio ZIP di output.
        (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());
}

Ottieni una licenza gratuita

Puoi provare l’API senza limitazioni di valutazione richiedendo una licenza temporanea gratuita.

Conclusione

In questo articolo, hai imparato come convertire i file TeX in formato XPS e PDF usando C++. Inoltre, hai imparato a convertire i file TeX in un archivio ZIP in file PDF compressi. Aspose.TeX per C++ fornisce molte funzionalità aggiuntive per lavorare con i file TeX. Puoi esplorare l’API in dettaglio visitando la documentazione ufficiale. In caso di domande, non esitare a contattarci sul nostro forum di supporto gratuito.

Guarda anche