Obtenir les propriétés effectives des formes à partir des présentations sur Android

Dans ce sujet, nous aborderons les propriétés effective et local. Lorsque nous définissons des valeurs directement à ces niveaux

  1. Dans les propriétés de portion sur la diapositive de la portion ;
  2. Dans le style de texte de forme prototype sur la diapositive maître ou le plan (si la forme du cadre de texte de la portion en possède un) ;
  3. Dans les paramètres globaux de texte de la présentation ;

Ces valeurs sont appelées valeurs local. À n’importe quel niveau, les valeurs local peuvent être définies ou omises. Mais lorsqu’une application doit savoir à quoi la portion doit ressembler, elle utilise les valeurs effective. Vous pouvez obtenir les valeurs effective en utilisant la méthode getEffective() du format local.

Ce code d’exemple montre comment obtenir les valeurs effective :

Presentation pres = new Presentation("Presentation1.pptx");
try {
    IAutoShape shape = (IAutoShape)pres.getSlides().get_Item(0).getShapes().get_Item(0);

    ITextFrameFormat localTextFrameFormat = shape.getTextFrame().getTextFrameFormat();
    ITextFrameFormatEffectiveData effectiveTextFrameFormat = localTextFrameFormat.getEffective();

    IPortionFormat localPortionFormat = shape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0).getPortionFormat();
    IPortionFormatEffectiveData effectivePortionFormat = localPortionFormat.getEffective();
} finally {
    if (pres != null) pres.dispose();
}

Obtenir les propriétés effective d’une caméra

Aspose.Slides for Android via Java permet aux développeurs d’obtenir les propriétés effective de la caméra. À cette fin, l’interface ICameraEffectiveData a été ajoutée à Aspose.Slides. L’interface ICameraEffectiveData représente un objet immuable contenant les propriétés effective de la caméra. Une instance de ICameraEffectiveData est utilisée comme partie de l’interface IThreeDFormatEffectiveData, qui est une paire de effective values pour la classe ThreeDFormat.

Ce code d’exemple montre comment obtenir les propriétés effective pour la caméra :

Presentation pres = new Presentation("Presentation1.pptx");
try {
    IThreeDFormatEffectiveData threeDEffectiveData = pres.getSlides().get_Item(0).getShapes().get_Item(0).getThreeDFormat().getEffective();

    System.out.println("= Effective camera properties =");
    System.out.println("Type: " + threeDEffectiveData.getCamera().getCameraType());
    System.out.println("Field of view: " + threeDEffectiveData.getCamera().getFieldOfViewAngle());
    System.out.println("Zoom: " + threeDEffectiveData.getCamera().getZoom());
} finally {
    if (pres != null) pres.dispose();
}

Obtenir les propriétés effective d’un Light Rig

Aspose.Slides for Android via Java permet aux développeurs d’obtenir les propriétés effective du Light Rig. À cette fin, l’interface ILightRigEffectiveData a été ajoutée à Aspose.Slides. L’interface ILightRigEffectiveData représente un objet immuable contenant les propriétés effective du Light Rig. Une instance de l’interface ILightRigEffectiveData est utilisée comme partie de l’interface IThreeDFormatEffectiveData, qui est une paire de effective values pour la classe ThreeDFormat.

Ce code d’exemple montre comment obtenir les propriétés effective du Light Rig :

Presentation pres = new Presentation("Presentation1.pptx");
try {
    IThreeDFormatEffectiveData threeDEffectiveData = pres.getSlides().get_Item(0).getShapes().get_Item(0).getThreeDFormat().getEffective();

    System.out.println("= Effective light rig properties =");
    System.out.println("Type: " + threeDEffectiveData.getLightRig().getLightType());
    System.out.println("Direction: " + threeDEffectiveData.getLightRig().getDirection());
} finally {
    if (pres != null) pres.dispose();
}

Obtenir les propriétés effective d’une forme biseautée

Aspose.Slides for Android via Java permet aux développeurs d’obtenir les propriétés effective d’une forme biseautée. À cette fin, l’interface IShapeBevelEffectiveData a été ajoutée à Aspose.Slides. L’interface IShapeBevelEffectiveData représente un objet immuable contenant les propriétés effective du relief de la forme. Une instance de l’interface IShapeBevelEffectiveData est utilisée comme partie de l’interface IThreeDFormatEffectiveData, qui est une paire de effective values pour la classe ThreeDFormat.

Ce code d’exemple montre comment obtenir les propriétés effective pour la forme biseautée :

Presentation pres = new Presentation("Presentation1.pptx");
try {
    IThreeDFormatEffectiveData threeDEffectiveData = pres.getSlides().get_Item(0).getShapes().get_Item(0).getThreeDFormat().getEffective();

    System.out.println("= Effective shape's top face relief properties =");
    System.out.println("Type: " + threeDEffectiveData.getBevelTop().getBevelType());
    System.out.println("Width: " + threeDEffectiveData.getBevelTop().getWidth());
    System.out.println("Height: " + threeDEffectiveData.getBevelTop().getHeight());
} finally {
    if (pres != null) pres.dispose();
}

Obtenir les propriétés effective d’un cadre de texte

En utilisant Aspose.Slides for Android via Java, vous pouvez obtenir les propriétés effective d’un cadre de texte. À cette fin, l’interface ITextFrameFormatEffectiveData a été ajoutée à Aspose.Slides. Elle contient les propriétés de mise en forme effective du cadre de texte.

Ce code d’exemple montre comment obtenir les propriétés de mise en forme effective du cadre de texte :

Presentation pres = new Presentation("Presentation1.pptx");
try {
    IAutoShape shape = (IAutoShape)pres.getSlides().get_Item(0).getShapes().get_Item(0);
    ITextFrameFormatEffectiveData effectiveTextFrameFormat = shape.getTextFrame().getTextFrameFormat().getEffective();

    System.out.println("Anchoring type: " + effectiveTextFrameFormat.getAnchoringType());
    System.out.println("Autofit type: " + effectiveTextFrameFormat.getAutofitType());
    System.out.println("Text vertical type: " + effectiveTextFrameFormat.getTextVerticalType());
    System.out.println("Margins");
    System.out.println("   Left: " + effectiveTextFrameFormat.getMarginLeft());
    System.out.println("   Top: " + effectiveTextFrameFormat.getMarginTop());
    System.out.println("   Right: " + effectiveTextFrameFormat.getMarginRight());
    System.out.println("   Bottom: " + effectiveTextFrameFormat.getMarginBottom());
} finally {
    if (pres != null) pres.dispose();
}

Obtenir les propriétés effective d’un style de texte

En utilisant Aspose.Slides for Android via Java, vous pouvez obtenir les propriétés effective d’un style de texte. À cette fin, l’interface ITextStyleEffectiveData a été ajoutée à Aspose.Slides. Elle contient les propriétés effective du style de texte.

Ce code d’exemple montre comment obtenir les propriétés effective du style de texte :

Presentation pres = new Presentation("Presentation1.pptx");
try {
    IAutoShape shape = (IAutoShape)pres.getSlides().get_Item(0).getShapes().get_Item(0);
    ITextStyleEffectiveData effectiveTextStyle = shape.getTextFrame().getTextFrameFormat().getTextStyle().getEffective();

    for (int i = 0; i <= 8; i++)
    {
        IParagraphFormatEffectiveData effectiveStyleLevel = effectiveTextStyle.getLevel(i);
        System.out.println("= Effective paragraph formatting for style level #" + i + " =");

        System.out.println("Depth: " + effectiveStyleLevel.getDepth());
        System.out.println("Indent: " + effectiveStyleLevel.getIndent());
        System.out.println("Alignment: " + effectiveStyleLevel.getAlignment());
        System.out.println("Font alignment: " + effectiveStyleLevel.getFontAlignment());
    }
} finally {
    if (pres != null) pres.dispose();
}

Obtenir la valeur effective de la hauteur de police

En utilisant Aspose.Slides for Android via Java, vous pouvez obtenir les propriétés effective de la hauteur de police. Ici, nous fournissons un code qui montre la valeur effective de la hauteur de police d’une portion changer après que des valeurs locales de hauteur de police soient définies à différents niveaux de la structure de la présentation :

Presentation pres = new Presentation();
try {
    IAutoShape newShape = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle, 100, 100, 400, 75, false);
    newShape.addTextFrame("");
    newShape.getTextFrame().getParagraphs().get_Item(0).getPortions().clear();

    IPortion portion0 = new Portion("Sample text with first portion");
    IPortion portion1 = new Portion(" and second portion.");

    newShape.getTextFrame().getParagraphs().get_Item(0).getPortions().add(portion0);
    newShape.getTextFrame().getParagraphs().get_Item(0).getPortions().add(portion1);

    System.out.println("Effective font height just after creation:");
    System.out.println("Portion #0: " + portion0.getPortionFormat().getEffective().getFontHeight());
    System.out.println("Portion #1: " + portion1.getPortionFormat().getEffective().getFontHeight());

    pres.getDefaultTextStyle().getLevel(0).getDefaultPortionFormat().setFontHeight(24);
    System.out.println("Effective font height after setting entire presentation default font height:");
    System.out.println("Portion #0: " + portion0.getPortionFormat().getEffective().getFontHeight());
    System.out.println("Portion #1: " + portion1.getPortionFormat().getEffective().getFontHeight());

    newShape.getTextFrame().getParagraphs().get_Item(0).getParagraphFormat().getDefaultPortionFormat().setFontHeight(40);
    System.out.println("Effective font height after setting paragraph default font height:");
    System.out.println("Portion #0: " + portion0.getPortionFormat().getEffective().getFontHeight());
    System.out.println("Portion #1: " + portion1.getPortionFormat().getEffective().getFontHeight());

    newShape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0).getPortionFormat().setFontHeight(55);
    System.out.println("Effective font height after setting portion #0 font height:");
    System.out.println("Portion #0: " + portion0.getPortionFormat().getEffective().getFontHeight());
    System.out.println("Portion #1: " + portion1.getPortionFormat().getEffective().getFontHeight());

    newShape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(1).getPortionFormat().setFontHeight(18);
    System.out.println("Effective font height after setting portion #1 font height:");
    System.out.println("Portion #0: " + portion0.getPortionFormat().getEffective().getFontHeight());
    System.out.println("Portion #1: " + portion1.getPortionFormat().getEffective().getFontHeight());

    pres.save("SetLocalFontHeightValues.pptx",SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Obtenir le format de remplissage effective d’un tableau

En utilisant Aspose.Slides for Android via Java, vous pouvez obtenir le format de remplissage effectif pour différentes parties logiques d’un tableau. À cette fin, l’interface ICellFormatEffectiveData a été ajoutée à Aspose.Slides. Elle contient les propriétés de remplissage effectives. Veuillez noter : le format de cellule a toujours la priorité sur le format de ligne ; la ligne a la priorité sur la colonne ; et la colonne a la priorité sur le tableau entier.

Presentation pres = new Presentation("Presentation1.pptx");
try {
    ITable tbl = (ITable)pres.getSlides().get_Item(0).getShapes().get_Item(0);
    ITableFormatEffectiveData tableFormatEffective = tbl.getTableFormat().getEffective();
    IRowFormatEffectiveData rowFormatEffective = tbl.getRows().get_Item(0).getRowFormat().getEffective();
    IColumnFormatEffectiveData columnFormatEffective = tbl.getColumns().get_Item(0).getColumnFormat().getEffective();
    ICellFormatEffectiveData cellFormatEffective = tbl.get_Item(0, 0).getCellFormat().getEffective();

    IFillFormatEffectiveData tableFillFormatEffective = tableFormatEffective.getFillFormat();
    IFillFormatEffectiveData rowFillFormatEffective = rowFormatEffective.getFillFormat();
    IFillFormatEffectiveData columnFillFormatEffective = columnFormatEffective.getFillFormat();
    IFillFormatEffectiveData cellFillFormatEffective = cellFormatEffective.getFillFormat();
} finally {
    if (pres != null) pres.dispose();
}

FAQ

Comment savoir si j’ai obtenu un « snapshot » plutôt qu’un objet « live », et quand devrais‑je relire les propriétés effective ?

Les objets EffectiveData sont des instantanés immuables des valeurs calculées au moment de l’appel. Si vous modifiez les paramètres locaux ou hérités de la forme, récupérez à nouveau les données effective pour obtenir les valeurs mises à jour.

Le fait de modifier la diapositive de mise en page/maître influence‑t‑il les propriétés effective déjà récupérées ?

Oui, mais uniquement après les avoir relues. Un objet EffectiveData déjà obtenu ne se met pas à jour ; il faut le demander à nouveau après avoir changé la mise en page ou le maître.

Puis‑je modifier les valeurs via EffectiveData ?

Non. EffectiveData est en lecture seule. Modifiez les objets de mise en forme locaux (forme/texte/3D, etc.), puis obtenez à nouveau les valeurs effective.

Que se passe‑t‑il si une propriété n’est pas définie au niveau de la forme, ni dans la mise en page/maître, ni dans les paramètres globaux ?

La valeur effective est déterminée par le mécanisme par défaut (valeurs par défaut de PowerPoint/Aspose.Slides). Cette valeur résolue fait partie de l’instantané EffectiveData.

À partir d’une valeur de police effective, puis‑je savoir quel niveau a fourni la taille ou la police ?

Pas directement. EffectiveData renvoie la valeur finale. Pour connaître la source, examinez les valeurs locales au niveau de la portion/paragraph/texte et les styles de texte à la mise en page/maître/présentation pour voir où la première définition explicite apparaît.

Pourquoi les valeurs EffectiveData ressemblent parfois exactement aux valeurs locales ?

Parce que la valeur locale s’est avérée être la valeur finale (aucune héritage de niveau supérieur n’a été nécessaire). Dans ce cas, la valeur effective correspond à la valeur locale.

Quand devrais‑je utiliser les propriétés effective et quand me contenter des propriétés locales ?

Utilisez EffectiveData lorsque vous avez besoin du résultat « tel qu’il est rendu » après l’application de tout l’héritage (par ex., pour aligner les couleurs, retraits ou tailles). Si vous devez modifier la mise en forme à un niveau précis, modifiez les propriétés locales puis, si nécessaire, relisez EffectiveData pour vérifier le résultat.