CurrentShape

ImageSavingArgs.CurrentShape property

يحصل علىShapeBase الكائن المقابل للشكل أو شكل المجموعة الذي سيتم حفظه.

public ShapeBase CurrentShape { get; }

ملاحظات

IImageSavingCallback يمكن تشغيله أثناء حفظ شكل أو شكل مجموعة. لهذا السبب تحتوي الخاصية علىShapeBase النوع. يمكنك التحقق مما إذا كان شكل المجموعة بمقارنة ShapeType معGroup أو عن طريق إرساله إلى إحدى الفئات المشتقة: Shape أوGroupShape.

يستخدم Aspose.Words اسم ملف المستند ورقمًا فريدًا لإنشاء اسم ملف فريد لكل صورة موجودة في المستند. يمكنك استخدامCurrentShapeخاصية لإنشاء اسم ملف “أفضل” لـ من خلال فحص خصائص الشكل مثلTitle (الشكل فقط)،SourceFullName (الشكل فقط) وNameبالطبع يمكنك إنشاء أسماء الملفات باستخدام أي خصائص أو معايير أخرى ولكن لاحظ أن أسماء الملفات الفرعية يجب أن تكون فريدة ضمن عملية التصدير.

قد لا تتوفر بعض الصور في المستند. للتحقق من توفر الصور، استخدم IsImageAvailable ملكية.

أمثلة

يوضح كيفية إشراك استدعاء حفظ الصورة في عملية تحويل HTML.

public void ImageSavingCallback()
{
    Document doc = new Document(MyDir + "Rendering.docx");

    // عندما نحفظ المستند في HTML، يمكننا تمرير كائن SaveOptions لتعيين معاودة الاتصال
    // لتخصيص عملية حفظ الصورة.
    HtmlSaveOptions options = new HtmlSaveOptions();
    options.ImageSavingCallback = new ImageShapePrinter();

    doc.Save(ArtifactsDir + "HtmlSaveOptions.ImageSavingCallback.html", options);
}

/// <summary>
/// طباعة خصائص كل صورة أثناء عملية الحفظ التي تحفظها في ملف صورة في نظام الملفات المحلي
/// أثناء تصدير المستند إلى HTML.
/// </summary>
private class ImageShapePrinter : IImageSavingCallback
{
    void IImageSavingCallback.ImageSaving(ImageSavingArgs args)
    {
        args.KeepImageStreamOpen = false;
        Assert.True(args.IsImageAvailable);

        Console.WriteLine($"{args.Document.OriginalFileName.Split('\\').Last()} Image #{++mImageCount}");

        LayoutCollector layoutCollector = new LayoutCollector(args.Document);

        Console.WriteLine($"\tOn page:\t{layoutCollector.GetStartPageIndex(args.CurrentShape)}");
        Console.WriteLine($"\tDimensions:\t{args.CurrentShape.Bounds}");
        Console.WriteLine($"\tAlignment:\t{args.CurrentShape.VerticalAlignment}");
        Console.WriteLine($"\tWrap type:\t{args.CurrentShape.WrapType}");
        Console.WriteLine($"Output filename:\t{args.ImageFileName}\n");
    }

    private int mImageCount;
}

أنظر أيضا