Phân phối Batch LaTeX đến PNG là một yêu cầu phổ biến cho tài liệu web, cơ sở kiến thức, và các ứng dụng toán học nặng. Aspose.TEX cho .NET cung cấp một API đơn giản để chuyển đổi .tex Nguồn vào các hình ảnh raster với kiểm soát các thư mục xuất và độ phân giải. Bài viết này cho thấy một bộ chuyển đổi tệp duy nhất tối thiểu và một đường ống bìa mạnh mẽ bạn có thể rơi vào bất kỳ ứng dụng .NET.

Nguyên tắc

  • .NET 6 hoặc hơn
  • gói NuGet: Aspose.TeX
  • Các nguồn LaTeX được thu thập dưới động cơ Object LaTex được sử dụng bởi Aspose.TEX

ASPOSE.TEX Giới thiệu TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX), ImageDevice, và PngSaveOptions để sản xuất PNG.

Chuyển đổi tối thiểu: một tệp LaTeX sang PNG

Ví dụ này chuyển đổi hello-world.ltx (hoặc .tex) đến PNG trong thư mục output. thiết bị viết tệp hình ảnh trực tiếp.

// File: Program.cs
// NuGet: Aspose.TeX

using System;
using System.IO;
using Aspose.TeX;

class Program
{
    static void Main()
    {
        var inputFile  = Path.GetFullPath("hello-world.tex"); // or .ltx
        var outputDir  = Path.GetFullPath("out-png");
        Directory.CreateDirectory(outputDir);

        // 1) Create conversion options for Object LaTeX
        TeXOptions options = TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX);

        // 2) Choose where to write output files
        options.OutputWorkingDirectory = new OutputFileSystemDirectory(outputDir);

        // 3) Save as PNG (you can set resolution if required)
        var png = new PngSaveOptions
        {
            // Resolution = 300 // uncomment to render at 300 DPI
        };
        options.SaveOptions = png;

        // 4) Run the job. ImageDevice writes PNG files into the output directory.
        var device = new ImageDevice();
        new TeXJob(inputFile, device, options).Run();

        Console.WriteLine("PNG written to: " + outputDir);
    }
}

Sau đây là mô hình được tài liệu: tạo TeXOptions, Set OutputWorkingDirectory, Set PngSaveOptionsSau đó chạy A TeXJob Với một ImageDevice.

Batch chuyển đổi: tất cả .tex file trong folder

Phiên bản batch quét một thư mục nhập và chuyển đổi mỗi .tex Nó cũng cho thấy làm thế nào để kiểm soát nơi phụ thuộc và đồ họa bao gồm được đọc từ.

// File: BatchLatexToPng.cs
// NuGet: Aspose.TeX

using System;
using System.IO;
using Aspose.TeX;

public static class BatchLatexToPng
{
    public static int Run(string inputDir, string outputDir, int? dpi = null)
    {
        if (!Directory.Exists(inputDir))
        {
            Console.Error.WriteLine("Input directory not found: " + inputDir);
            return 1;
        }
        Directory.CreateDirectory(outputDir);

        // Configure conversion options once and reuse
        var options = TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX);

        // Where to read auxiliary inputs (e.g., included images)
        options.InputWorkingDirectory = new InputFileSystemDirectory(inputDir);

        // Where to read extra required packages (if you supply them)
        // options.RequiredInputDirectory = new InputFileSystemDirectory(Path.Combine(inputDir, "texmf"));

        // Where to write PNG, log, aux, etc.
        options.OutputWorkingDirectory = new OutputFileSystemDirectory(outputDir);

        // PNG save options (set DPI if needed)
        var png = new PngSaveOptions();
        if (dpi.HasValue) png.Resolution = dpi.Value;
        options.SaveOptions = png;

        int ok = 0, err = 0;
        var device = new ImageDevice(); // will write images to OutputWorkingDirectory

        foreach (var texPath in Directory.GetFiles(inputDir, "*.tex", SearchOption.AllDirectories))
        {
            try
            {
                // Optional: set a job name so output files have predictable names
                options.JobName = Path.GetFileNameWithoutExtension(texPath);

                new TeXJob(texPath, device, options).Run();
                Console.WriteLine("OK  " + Path.GetRelativePath(inputDir, texPath));
                ok++;
            }
            catch (Exception ex)
            {
                Console.WriteLine("ERR " + Path.GetRelativePath(inputDir, texPath) + " | " + ex.Message);
                err++;
            }
        }

        Console.WriteLine($"Done. Success: {ok}, Failed: {err}");
        return err == 0 ? 0 : 2;
    }
}

Các điểm chính cho công việc batch:

  • Sử dụng InputWorkingDirectory Đối với các tài sản như \includegraphics{img.png}.
  • Sử dụng RequiredInputDirectory Nếu bạn cần cung cấp thêm gói LaTeX bên ngoài bộ kết hợp.
  • thiết lập JobName để ảnh hưởng đến danh hiệu sản xuất theo tài liệu.

Chụp ảnh trong bộ nhớ thay vì viết tệp

Nếu bạn thích tự phát các byte PNG, hãy để thiết bị buffer chúng bằng cách tắt các file viết trực tiếp.

using System;
using System.IO;
using Aspose.TeX;

static void ConvertToStreams(string inputFile, string outputDir)
{
    Directory.CreateDirectory(outputDir);

    var options = TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX);
    var png     = new PngSaveOptions { DeviceWritesImages = false };
    options.SaveOptions = png;

    var device = new ImageDevice();
    new TeXJob(inputFile, device, options).Run();

    for (int i = 0; i < device.Result.Length; i++)
    {
        var pageBytes = device.Result[i];
        var outPath   = Path.Combine(outputDir, $"page-{i + 1}.png");
        File.WriteAllBytes(outPath, pageBytes);
    }
}

Điều này phản ánh “cách thay thế” được tài liệu để viết các tệp PNG đầu ra.

Giải quyết vấn đề và tips

    • Giải pháp *: Tăng PngSaveOptions.Resolution cho các công thức sắc nét hơn trong chụp màn hình retina hoặc các tài sản in.
  • Tùy thuộc: đặt gói tùy chỉnh và nhập vào các thư mục được chỉ định bởi RequiredInputDirectoryInputWorkingDirectory.
    • Tên *: Set options.JobName cho các tên tệp output có thể dự đoán trong batch run.
  • Logging: động cơ viết một bản sao .log đến thư mục xuất khẩu, đó là hữu ích cho việc phá vỡ các gói bị mất và lỗi LaTeX.

Khi nào để chọn các định dạng khác

PNG là lý tưởng cho việc xuất bản web và kết hợp UI. Nếu bạn cần output vector cho zoom vô hạn hoặc văn bản nhỏ ở quy mô, hãy chuyển sang SVG bằng cách sử dụng SvgSaveOptions Và một SvgDevice, hoặc đến PDF cho các tài liệu được thanh toán. dòng chuyển đổi vẫn giống nhau.

Với các mô hình này, bạn có thể tự động hóa LaTeX đến PNG theo quy mô trong .NET trong khi duy trì quyền kiểm soát đầy đủ về độ phân giải, thư mục và xử lý tệp.

More in this category