LaTeX до зображення | Aspose.TeX для C++

Aspose.TeX для C++ також дозволяє нам конвертувати файли LaTeX у ряд інших форматів растрових зображень.

Як конвертувати LaTeX у PNG

Давайте детально розглянемо код на C++, що забезпечує найпростіший спосіб перетворення LaTeX у формат PNG.

                
            

Отже, перше, що нам потрібно зробити (ну, іноді не перше), це створити екземпляр класу TeXOptions. Єдиним статичним методом, який це робить, є ConsoleAppOptions(), тож давайте не будемо спантеличуватися значенням його назви. Метод використовує get_ObjectLaTeX() екземпляр класу TeXConfig, який точно підходить для перетворення файлу LaTeX. Ця конфігурація повідомляє механізму Object TeX завантажити формат Object LaTeX і бути готовим прийняти файл LaTeX. Формат Object LaTeX насправді є лише форматом LaTeX, за винятком того, що він використовує специфічні примітиви Object TeX для налаштування показників сторінки.

Першим із необхідних параметрів є OutputWorkingDirectory, який визначає простір або область, куди буде записаний вихід TeX. Тут наведено деталі про концепцію вихідного каталогу в Aspose.TeX для C++. У цьому прикладі ми використовуємо клас OutputFileSystemDirectory, який дозволяє записувати вихідні дані у вказаний каталог або папку.

Другий варіант — екземпляр класу SaveOptions, який керуватиме перетворенням об’єктної моделі у цільовий формат. Оскільки ми перетворюємо LaTeX у PNG, це екземпляр класу PngSaveOptions, який дозволяє нам вказати роздільну здатність вихідних зображень.

Далі нам потрібно створити екземпляр класу TeXJob. Бажаючи перетворити файл LaTeX, що зберігається у файловій системі, ми використовуємо this версію конструктора. Нам потрібно вказати повний шлях до файлу. Інакше механізм шукатиме його в поточному каталозі (це CurrentDirectory) і, швидше за все, не знайде. Тим не менш, ми можемо опустити розширення, якщо наш файл має .tex. Механізм додасть його автоматично. Другим аргументом конструктора є екземпляр класу Device. Оскільки ми перетворюємо LaTeX у PNG, це екземпляр класу ImageDevice (який є спільним для всіх підтримуваних форматів зображень). В якості останнього аргументу ми передаємо нещодавно підготовлені параметри конвертації.

Все, що залишилося зробити зараз, це запустити роботу.

Незалежно від того, чи був запуск успішним чи ні, першим результатом, який ми побачимо, буде вихід терміналу. У разі успіху це виглядає приблизно так:

 1This is ObjectTeX, Version 3.1415926-1.0 (Aspose.TeX 21.8)
 2entering extended mode
 3
 4(<input_directory>\hello-world.ltx
 5LaTeX2e <2011/06/27>
 6(article.cls
 7Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
 8(size10.clo))
 9No file hello-world.aux.
10[1]
11(<output_directory>\hello-world.aux) )
12Output written on hello-world.png (1 page).
13Transcript written on hello-world.log.

Інші «плоди» праці движка ми знайдемо в папці, яку ми вказали як вихідний каталог. Це буде файл стенограми та, ось він!, основний вихідний(і) файл(и) зображень PNG.

Альтернативний спосіб запису основних вихідних файлів PNG

Існує інший спосіб отримати дані зображення у вигляді масиву масивів байтів, кожен масив у другому вимірі представляє дані зображення для окремої сторінки.

 1    // Create conversion options for Object LaTeX format on Object TeX engine extension.
 2    System::SharedPtr<TeXOptions> options = TeXOptions::ConsoleAppOptions(TeXConfig::get_ObjectLaTeX());
 3    // Specify the file system working directory for the output.
 4    options->set_OutputWorkingDirectory(System::MakeObject<OutputFileSystemDirectory>(RunExamples::OutputDirectory));
 5    // Initialize the options for saving in PNG format.
 6    options->set_SaveOptions(System::MakeObject<PngSaveOptions>());
 7    // Run LaTeX to PNG conversion.
 8    System::SharedPtr<ImageDevice> device = System::MakeObject<ImageDevice>();
 9    System::MakeObject<TeXJob>(System::IO::Path::Combine(RunExamples::InputDirectory, u"hello-world.ltx"), device, options)->Run();
10    
11    // Save pages file by file.
12    for (int32_t i = 0; i < device->get_Result()->get_Length(); i++)
13    {
14        {
15            System::SharedPtr<System::IO::Stream> fs = System::IO::File::Open(System::IO::Path::Combine(RunExamples::OutputDirectory, System::String(u"page-") + (i + 1) + u".png"), System::IO::FileMode::Create);
16            // Clearing resources under 'using' statement
17            System::Details::DisposeGuard<1> __dispose_guard_0({ fs});
18            // ------------------------------------------
19            
20            try
21            {
22                fs->Write(device->get_Result()[i], 0, device->get_Result()[i]->get_Length());
23            }
24            catch(...)
25            {
26                __dispose_guard_0.SetCurrentException(std::current_exception());
27            }
28        }
29    }

Файл(и) “page-n.png” буде записаний у будь-який шлях, який ми вкажемо. На відміну від PDF output, вони дублюватимуть вихідні файли PNG, записані у вихідний каталог.

Про параметри введення

Якщо наш головний вхідний файл потребує залежностей, наприклад, пакетів, які не входять до базової системи LaTeX і підтримуваних пакетів, ми ПОВИННІ встановити опцію RequiredInputDirectory так само, як ми встановлюємо OutputWorkingDirectory і помістіть залежності в цей каталог. Залежності можуть бути довільно організовані в підкаталоги. Якщо у нас є власні файли для включення в процес верстки, скажімо, зовнішні графічні файли, ми ПОВИННІ також встановити InputWorkingDirectory, використовуючи шлях до розташування, де ці файли зібрано. Ми також можемо розмістити головний вхідний файл десь усередині вхідного каталогу та вказати відносний шлях у методі run() (або взагалі не вказати шлях, якщо головний вхідний файл знаходиться в корені). Тут наведено деталі про концепцію каталогу вводу в Aspose.TeX для C++ і надані реалізації.

Інші варіанти завдань TeX обговорюються тут.

Ви також можете ознайомитися з безкоштовною [веб-програмою] для перетворення LaTeX у PNG (26), створеною на основі API Aspose.TeX для .NET. Тут – сторінка версії C++.

Нижче ми обговорюємо перетворення LaTeX в інші підтримувані формати растрових зображень. Ми не будемо вдаватися в подробиці лише тому, що їх насправді немає. Єдина відмінність полягає в типі властивості SaveOptions у параметрах перетворення.

Як конвертувати LaTeX у JPEG

1...
2// Initialize the options for saving in JPEG format.
3options->set_SaveOptions(System::MakeObject<JpegSaveOptions>());

Ви також можете ознайомитися з безкоштовною [веб-програмою] для перетворення LaTeX у JPEG (30), створеною на основі API Aspose.TeX для .NET. Тут – сторінка версії C++.

Як конвертувати LaTeX у TIFF

1...
2// Initialize the options for saving in TIFF format.
3options->set_SaveOptions(System::MakeObject<TiffSaveOptions>());

Ви також можете скористатися безкоштовною [веб-програмою] для перетворення LaTeX у TIFF (33), створеною на основі API Aspose.TeX для .NET. Тут – сторінка версії C++.

Як конвертувати LaTeX у BMP

1...
2// Initialize the options for saving in BMP format.
3options->set_SaveOptions(System::MakeObject<BmpSaveOptions>());

Ви також можете ознайомитися з безкоштовною [веб-програмою] для перетворення LaTeX у BMP (36), створеною на основі API Aspose.TeX для .NET. Тут – сторінка версії C++.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.