LaTeX в изображение | .NET
Aspose.TeX for .NET позволяет нам конвертировать файлы LaTeX в ряд форматов растровых изображений.
Как конвертировать LaTeX в PNG
Давайте подробно рассмотрим код на C#, обеспечивающий самый простой способ преобразования LaTeX в формат PNG.
1// Convert LaTeX to PNG - simplest approach
2
3// Create conversion options for Object LaTeX format upon Object TeX engine extension.
4TeXOptions options = TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX);
5
6// Specify a file system working directory for the output.
7options.OutputWorkingDirectory = new OutputFileSystemDirectory(OutputDir);
8
9// Initialize the options for saving in PNG format.
10PngSaveOptions pngOptions = new PngSaveOptions();
11// Set image resolution to 300 DPI.
12pngOptions.Resolution = 300;
13options.SaveOptions = pngOptions;
14
15// Run LaTeX to PNG conversion.
16new TeXJob(Path.Combine(DataDir, "hello-world.ltx"), new ImageDevice(), options).Run();Итак, первое, что нам нужно сделать (ну, иногда не самое первое), — это создать экземпляр класса TeXOptions. Единственный статический метод, который это делает, — ConsoleAppOptions(), поэтому давайте не будем озадачиваться значением его имени. Метод принимает экземпляр ObjectLaTeX класса TeXConfig, который точно подходит для преобразования файла LaTeX. Эта конфигурация сообщает механизму Object TeX загрузить формат Object LaTeX и быть готовым принять файл LaTeX. Формат Object LaTeX на самом деле представляет собой формат LaTeX, за исключением того, что он использует специальные примитивы Object TeX для настройки показателей страницы.
Первая из обязательных опций — OutputWorkingDirectory, которая определяет пространство или область, куда будет записываться вывод TeX. Здесь приведены подробности концепции выходного каталога в Aspose.TeX для .NET. В этом примере мы используем класс OutputFileSystemDirectory, который позволяет нам записывать выходные данные в указанный каталог или папку.
Второй вариант — это экземпляр класса SaveOptions, который будет управлять преобразованием объектной модели в целевой формат. Поскольку мы конвертируем LaTeX в PNG, именно экземпляр класса PngSaveOptions позволяет нам указать разрешение выходных изображений.
Затем нам нужно создать экземпляр класса TeXJob. Желая преобразовать файл LaTeX, хранящийся в файловой системе, мы используем эту версию конструктора. Нам нужно указать полный путь к файлу. В противном случае движок будет искать его в текущем каталоге (то есть 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.
Есть еще один способ получить данные изображения в виде массива байтовых массивов: каждый массив во втором измерении представляет данные изображения для отдельной страницы.
Альтернативный пример преобразования
В следующем фрагменте кода C# показан другой способ получения PNG-файла путем записи данных изображения в поток памяти, а не напрямую в файловую систему. Этот подход полезен, когда вам нужно сохранить сгенерированные байты PNG в памяти для дальнейшей обработки, например, для отправки по сети, сохранения в базе данных или выполнения дополнительных преобразований перед сохранением.
1// Convert LaTeX to PNG - alternative approach with manual page-by-page saving
2
3// Create conversion options for Object LaTeX format upon Object TeX engine extension.
4TeXOptions options = TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX);
5
6// Specify a file system working directory for the output.
7options.OutputWorkingDirectory = new OutputFileSystemDirectory(OutputDir);
8
9// Initialize the options for saving in PNG format.
10PngSaveOptions pngSaveOptions = new PngSaveOptions();
11// Disable automatic image writing - we'll write them manually.
12pngSaveOptions.DeviceWritesImages = false;
13options.SaveOptions = pngSaveOptions;
14
15// Create the image device.
16ImageDevice device = new ImageDevice();
17
18// Run LaTeX to PNG conversion.
19new TeXJob(Path.Combine(DataDir, "hello-world.ltx"), device, options).Run();
20
21// Save pages file by file (useful for multi-page documents).
22for (int i = 0; i < device.Result.Length; i++)
23{
24 using (Stream fs = File.Open(Path.Combine(OutputDir, $"page-{i + 1}.png"), FileMode.Create))
25 fs.Write(device.Result[i], 0, device.Result[i].Length);
26}Файл(ы) “page-n.png” будут записаны по любому указанному нами пути. В отличие от Вывод PDF, они будут дублировать выходные файлы PNG, записанные в выходной каталог.
О параметрах ввода
Если наш основной входной файл требует зависимостей, например, пакетов, которые не включены в базовую систему LaTeX и поддерживаемых пакетов, мы ДОЛЖНЫ установить параметр
RequiredInputDirectory аналогично тому, как мы устанавливаем параметр
OutputWorkingDirectory. и поместите зависимости в этот каталог. Зависимости могут быть произвольно организованы в подкаталогах. Если у нас есть собственные файлы, которые нужно включить в процесс верстки, скажем, внешние графические файлы, мы ДОЛЖНЫ также установить
InputWorkingDirectory, используя путь к месту, где собраны эти файлы. Мы также можем поместить основной входной файл где-нибудь внутри входного каталога и указать относительный путь в методе run() (или вообще не указывать путь, если основной входной файл находится в корне).
Здесь приведены подробные сведения о концепции входного каталога в Aspose.TeX for .NET и предоставленных реализациях.
Другие варианты работы в TeX обсуждаются здесь.
Вы также можете ознакомиться с бесплатным преобразованием LaTeX в PNG веб-приложение, созданным на основе Aspose.TeX for .NET API.
Ниже мы обсудим преобразование LaTeX в другие поддерживаемые форматы растровых изображений, не углубляясь в детали, поскольку подробностей на самом деле нет. Единственная разница заключается в типе свойства SaveOptions в параметрах преобразования.
Как конвертировать LaTeX в JPG
1// Convert LaTeX to JPEG
2
3// Create conversion options for Object LaTeX format upon Object TeX engine extension.
4TeXOptions options = TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX);
5
6// Specify a file system working directory for the output.
7options.OutputWorkingDirectory = new OutputFileSystemDirectory(OutputDir);
8
9// Initialize the options for saving in JPEG format.
10options.SaveOptions = new JpegSaveOptions();
11
12// Run LaTeX to JPEG conversion.
13new TeXJob(Path.Combine(DataDir, "hello-world.ltx"), new ImageDevice(), options).Run();Вы также можете ознакомиться с бесплатным преобразованием LaTeX в JPG веб-приложение, созданным на основе Aspose.TeX for .NET API.
Как конвертировать LaTeX в TIFF
1// Convert LaTeX to TIFF
2
3// Create conversion options for Object LaTeX format upon Object TeX engine extension.
4TeXOptions options = TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX);
5
6// Specify a file system working directory for the output.
7options.OutputWorkingDirectory = new OutputFileSystemDirectory(OutputDir);
8
9// Initialize the options for saving in TIFF format.
10options.SaveOptions = new TiffSaveOptions();
11
12// Run LaTeX to TIFF conversion.
13new TeXJob(Path.Combine(DataDir, "hello-world.ltx"), new ImageDevice(), options).Run();Вы также можете ознакомиться с бесплатным преобразованием LaTeX в TIFF веб-приложение, созданным на основе Aspose.TeX for .NET API.
Как конвертировать LaTeX в BMP
1// Convert LaTeX to BMP
2
3// Create conversion options for Object LaTeX format upon Object TeX engine extension.
4TeXOptions options = TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX);
5
6// Specify a file system working directory for the output.
7options.OutputWorkingDirectory = new OutputFileSystemDirectory(OutputDir);
8
9// Initialize the options for saving in BMP format.
10options.SaveOptions = new BmpSaveOptions();
11
12// Run LaTeX to BMP conversion.
13new TeXJob(Path.Combine(DataDir, "hello-world.ltx"), new ImageDevice(), options).Run();Вы также можете ознакомиться с бесплатным веб-приложением для преобразования LaTeX в BMP, созданным на основе Aspose.TeX for .NET API.
Как конвертировать LaTeX в SVG
И еще один поддерживаемый целевой формат — SVG. Масштабируемая векторная графика (SVG) — это формат векторных изображений на основе XML для определения двумерной графики с поддержкой интерактивности и анимации.
Изображения SVG определяются в формате векторной графики и сохраняются в текстовых файлах XML. Таким образом, изображения SVG можно масштабировать без потери качества, а файлы SVG можно искать, индексировать, создавать сценарии и сжимать. Текстовые файлы XML можно создавать и редактировать с помощью текстовых редакторов или редакторов векторной графики, и они отображаются в наиболее часто используемых веб-браузерах.
Существует библиотека Aspose.SVG, которая предоставляет различные функции, связанные с SVG. К ним относятся создание, загрузка, редактирование и преобразование документов SVG.
Преобразование LaTeX в SVG так же просто, как преобразование в форматы растровых изображений, за исключением того, что для SaveOptions ДОЛЖЕН быть установлен экземпляр класса SvgSaveOptions, а устройство ДОЛЖНО быть изменен на экземпляр класса SvgDevice.
1// Convert LaTeX to SVG - simplest approach
2
3// Create conversion options for Object LaTeX format upon Object TeX engine extension.
4TeXOptions options = TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX);
5
6// Specify a file system working directory for the output.
7options.OutputWorkingDirectory = new OutputFileSystemDirectory(OutputDir);
8
9// Initialize the options for saving in SVG format.
10options.SaveOptions = new SvgSaveOptions();
11
12// Run LaTeX to SVG conversion.
13new TeXJob(Path.Combine(DataDir, "hello-world.ltx"), new SvgDevice(), options).Run();Вы также можете ознакомиться с бесплатным преобразованием LaTeX в SVG веб-приложение, созданным на основе Aspose.TeX for .NET API.