דירוג המשלוח של 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 ייצור.

מינימום ההמרה: קובץ 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לאחר מכן לרוץ א TeXJob עם אחד ImageDevice.

תגית: Batch Conversion .tex קבצים במעבדה

גרסת ה-Batch סורקת תיעוד כניסה ומפנה כל אחד מהם. .tex זה גם מראה כיצד לשלוט היכן תלויות וגרפיקה הכוללת נרשמים.

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

נקודות מפתח לעבודה ב-Batch:

  • שימוש InputWorkingDirectory עבור נכסים כגון \includegraphics{img.png}.
  • שימוש RequiredInputDirectory אם אתה חייב לספק חבילות נוספות LaTeX מחוץ למערכת מובנית.
  • סדרה JobName כדי להשפיע על תוצאות filenames לפי מסמך.

לצלם תמונות בזיכרון במקום לכתוב קבצים

אם אתה מעדיף לשדרג בייטים PNG בעצמך, תן למכשיר להטביע אותם על ידי הפוך קבצים ישירים כתובים.

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 עבור נוסחאות חזקות יותר בתמונות מסך רשת או נכסים הדפסה.
    • תלויות**: לשים חבילות מותאמות אישית והכנסות בכתובת המפורטת על ידי RequiredInputDirectory ו InputWorkingDirectory.
  • תגית: Set options.JobName עבור שמות קבצי היציאה צפויים ב- batch runs.
  • Logging: המנוע כותב תסריט .log למדריך היציאה, אשר מועיל לדיבוג של חבילות חסרות ושגיאות LaTeX.

מתי לבחור פורמטים אחרים

PNG הוא אידיאלי לפרסום אינטרנט ו- UI. אם אתה זקוק לייצוא וקטור עבור זומם אינסופי או טקסט קטן בקנה מידה, לעבור ל- SVG באמצעות SvgSaveOptions ואחד SvgDevice, או ל- PDF עבור מסמכים משולבים.הזרימת ההמרה נשארת זהה.

עם דפוסים אלה, אתה יכול אוטומטי LaTeX ל- PNG בקנה מידה ב- .NET תוך שמירה על שליטה מלאה על הרזולוציה, התיקיות וניהול הקבצים.

More in this category