CurrentShape

ImageSavingArgs.CurrentShape property

Obtient leShapeBase objet correspondant à la forme ou à la forme de groupe qui est sur le point d’être enregistrée.

public ShapeBase CurrentShape { get; }

Remarques

IImageSavingCallback peut être déclenché tout en enregistrant une forme ou une forme de groupe. C’est pourquoi la propriété aShapeBase taper. Vous pouvez vérifier s’il s’agit d’une forme de groupe en comparant ShapeType avecGroup ou en le convertissant dans l’une des classes dérivées : Shape ouGroupShape.

Aspose.Words utilise le nom du fichier du document et un numéro unique pour générer un nom de fichier unique pour chaque image trouvée dans le document. Vous pouvez utiliser leCurrentShapepropriété pour générer un « meilleur » nom de fichier en examinant les propriétés de forme telles queTitle (Forme uniquement),SourceFullName (Forme uniquement) etName. Bien sûr, vous pouvez créer des noms de fichiers en utilisant d’autres propriétés ou critères , mais notez que les noms de fichiers subsidiaires doivent être uniques au sein de l’opération d’exportation.

Certaines images du document peuvent être indisponibles. Pour vérifier la disponibilité de l’image , utilisez leIsImageAvailable propriété.

Exemples

Montre comment impliquer un rappel d’enregistrement d’image dans un processus de conversion HTML.

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

    // Lorsque nous enregistrons le document au format HTML, nous pouvons passer un objet SaveOptions pour désigner un rappel
    // pour personnaliser le processus de sauvegarde de l'image.
    HtmlSaveOptions options = new HtmlSaveOptions();
    options.ImageSavingCallback = new ImageShapePrinter();

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

/// <summary>
/// Imprime les propriétés de chaque image au fur et à mesure que le processus d'enregistrement l'enregistre dans un fichier image dans le système de fichiers local
/// lors de l'export d'un document au format 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;
}

Voir également