การจัดเรียงแบตช์ LaTeX ไปยัง PNG เป็นข้อกําหนดทั่วไปสําหรับเอกสารเว็บฐานความรู้และแอพพลิเคชันขนาดเล็ก. Aspose.TEX สําหรับ .NET ให้ API ที่ง่ายต่อการแปลง .tex วัตถุประสงค์ในการสกรูรูปภาพที่มีการควบคุมของไดเรกทอรีการส่งออกและความละเอียด บทความนี้แสดงให้เห็นการแปลงไฟล์แบบเดี่ยวขั้นต่ําและท่อชุดที่แข็งแกร่งที่คุณสามารถวางลงในแอป .NET ใด ๆ

ข้อกําหนด

  • .NET 6 หรือเร็วกว่า
  • แพคเกจ NuGet: Aspose.TeX
  • แหล่ง LaTeX ที่รวบรวมภายใต้มอเตอร์ Object LaTex ที่ใช้โดย Aspose.TEX

Aspose.TeX แสดง TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX), ImageDevice, และ PngSaveOptions การผลิต PNG

การแปลงขั้นต่ํา: 1 ไฟล์ LaTeX ไปยัง PNG

ตัวอย่างนี้แปลง hello-world.ltx (หรือ .tex) ไปยัง PNG ในโฟลเดอร์การออก อุปกรณ์เขียนไฟล์ภาพโดยตรง

// 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);
    }
}

ต่อไปนี้เป็นรูปแบบที่พิสูจน์แล้ว: สร้าง TeXOptionsชุด OutputWorkingDirectoryชุด PngSaveOptionsจากนั้น Run A TeXJob ด้วย A ImageDevice.

การแปลงแบทช์: ทั้งหมด .tex ไฟล์ในโฟลเดอร์

รุ่นชุดสแกนไดเรกทอรีป้อนและแปลงแต่ละ .tex ไปยัง PNG นอกจากนี้ยังแสดงให้เห็นว่าวิธีการควบคุมที่อ้างอิงและกราฟิกที่รวมจะอ่านจาก

// 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;
    }
}

จุดสําคัญสําหรับงานแบทช์:

  • ใช InputWorkingDirectory สําหรับสินทรัพย์รวมเช่น \includegraphics{img.png}.
  • ใช RequiredInputDirectory หากคุณต้องจัดหาแพคเกจ LaTeX เพิ่มเติมนอกชุดในตัว
  • ชุด JobName การมีผลกระทบต่อชื่อไฟล์การส่งออกตามเอกสาร

การบันทึกภาพในหน่วยความจําแทนที่จะเขียนไฟล์

หากคุณชอบที่จะ stream PNG bytes ตัวคุณเองให้อุปกรณ์ buffer พวกเขาโดยการปิดการเขียนไฟล์โดยตรง จากนั้นบันทึกแต่ละหน้าไปยังชื่อไฟล์ของคุณเอง

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);
    }
}

นี่สะท้อนให้เห็นถึง “วิธีทางเลือก” ที่ได้รับการพิสูจน์ในการเขียนไฟล์ PNG ผลหลัก

การแก้ปัญหาและเคล็ดลับ

  • การแก้ปัญหา: การเพิ่มขึ้น PngSaveOptions.Resolution สําหรับสูตรที่ชัดเจนขึ้นในภาพหน้าจอเครือข่ายหรือสินทรัพย์พิมพ์
  • Dependencies: โพสต์แพคเกจที่กําหนดเองและรายการในไดเรกทอรีที่ระบุโดย RequiredInputDirectory และ InputWorkingDirectory.
  • ชื่อ: ชุด options.JobName สําหรับชื่อไฟล์การส่งออกที่คาดการณ์ได้ในชุด
  • Logging: มอเตอร์เขียน transkrip .log ไปยังไดเรกทอรีการส่งออกซึ่งเป็นประโยชน์สําหรับการลบแพคเกจที่หายไปและข้อผิดพลาด LaTeX

เมื่อเลือกรูปแบบอื่น ๆ

PNG เหมาะสําหรับการเผยแพร่เว็บและการรวม UI หากคุณต้องการการส่งออก vector สําหรับ zoom infinite หรือข้อความขนาดเล็กเปลี่ยนไป SVG โดยใช้ SvgSaveOptions และ A SvgDevice, หรือเป็น PDF สําหรับเอกสารที่ชําระ กระแสการแปลงยังคงเหมือนกัน

ด้วยรูปแบบเหล่านี้คุณสามารถอัตโนมัติ LaTeX ไปยัง PNG ในระดับ .NET ในขณะที่รักษาการควบคุมเต็มรูปแบบเกี่ยวกับความละเอียดไดเรกทอรีและการจัดการไฟล์

More in this category