LaTeX до зображення | .NET
Aspose.TeX для .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, що зберігається у файловій системі, ми використовуємо 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
Існує інший спосіб отримати дані зображення у вигляді масиву масивів байтів, кожен масив у другому вимірі представляє дані зображення для окремої сторінки.
Приклад альтернативного перетворення
Наведений нижче фрагмент коду 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 output, вони дублюватимуть вихідні файли PNG, записані у вихідний каталог.
Про параметри введення
Якщо наш головний вхідний файл потребує залежностей, наприклад, пакетів, які не входять до базової системи LaTeX і підтримуваних пакетів, ми ПОВИННІ встановити опцію
RequiredInputDirectory так само, як ми встановлюємо
OutputWorkingDirectory і помістіть залежності в цей каталог. Залежності можуть бути довільно організовані в підкаталоги. Якщо у нас є власні файли для включення в процес верстки, скажімо, зовнішні графічні файли, ми ПОВИННІ також встановити
InputWorkingDirectory, використовуючи шлях до розташування, де ці файли зібрано. Ми також можемо розмістити основний вхідний файл десь усередині вхідного каталогу та вказати відносний шлях у методі run() (або не вказати шлях взагалі, якщо головний вхідний файл знаходиться в корені).
Тут наведено деталі про концепцію каталогу введення в Aspose.TeX для .NET і надані реалізації.
Інші варіанти завдань TeX обговорюються тут.
Ви також можете ознайомитися з безкоштовною [веб-програмою] для перетворення LaTeX у PNG (26), створеною на основі Aspose.TeX для .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 (29), створеною на основі Aspose.TeX для .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 (31), створеним на основі Aspose.TeX для .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 (33), створеною на основі Aspose.TeX для .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 (41), створеною на основі Aspose.TeX для .NET API.