关于pptx中部分样式获取设置问题

1735550496616.png (5.7 KB)

想问下,如何对图中这些样式标签的获取和设置,主要使用了iGradientFormat和IFillFormat,但是不太明白这些标签对应的啥

@maochen

要获取和设置PPTX中样式标签的相关信息,您可以使用IGradientFormatIFillFormat接口。以下是一些关键点,帮助您理解这些标签的对应关系及其用法:

  1. 样式标签的获取

    • 您可以通过访问形状的文本框中的段落,获取每个段落的有效项目符号格式。使用IBulletFormatEffectiveData接口可以获取项目符号的类型和填充格式。
    • 例如,您可以检查项目符号的填充类型(如实心、渐变或图案),并根据填充类型获取相应的颜色或样式。
  2. 样式标签的设置

    • 对于渐变填充,您可以使用IGradientFormat接口来设置渐变的停止点和颜色。每个停止点都有一个位置和颜色属性,您可以通过这些属性来定义渐变效果。
    • 对于实心填充,您可以直接设置填充颜色。

以下是一个示例代码,展示如何获取和设置项目符号的填充格式:

Presentation pres = new Presentation("your_presentation.pptx");
AutoShape autoShape = (AutoShape) pres.getSlides().get_Item(0).getShapes().get_Item(0);
for (IParagraph para : autoShape.getTextFrame().getParagraphs()) {
    IBulletFormatEffectiveData bulletFormatEffective = para.getParagraphFormat().getBullet().getEffective();
    if (bulletFormatEffective.getType() != BulletType.None) {
        // 获取填充类型
        FillType fillType = bulletFormatEffective.getFillFormat().getFillType();
        if (fillType == FillType.Gradient) {
            // 获取渐变信息
            IGradientFormat gradientFormat = bulletFormatEffective.getFillFormat().getGradientFormat();
            for (IGradientStopEffectiveData gradStop : gradientFormat.getGradientStops()) {
                System.out.println("位置: " + gradStop.getPosition() + ", 颜色: " + gradStop.getColor());
            }
        }
    }
}

通过上述代码,您可以获取到项目符号的填充格式,并根据需要进行设置。希望这些信息能帮助您更好地理解和使用Aspose.Slides中的样式标签。

如果您有更具体的问题或需要进一步的帮助,请随时询问!

@maochen,
我们已在内部问题跟踪系统中创建了以下新工单,并将根据 Free Support Policies 中提到的条款考虑您的问题。

Issue ID(s): SLIDESJAVA-39611

如果您需要优先支持,可以访问 Paid Support Services,并直接联系付费支持管理团队。

找到方法了,iGradientFormat.getGradientStops().get_Item(0).getColor().getColorTransform().get_Item(0).getOperationType()和.getParameter()可以获取gradient内的属性,并且设置

@maochen,

看来您已经找到了获取和设置渐变样式的相关方法,并且该方法可以满足您的需求。如果您有其他疑问或意见,请随时给我们回信。

@maochen,

<a:ln>

此属性与 LineFormat 有关:

IAutoShape shape;
...
shape.getLineFormat().getFillFormat().setFillType(FillType.NoFill);

<a:lumMod>
<a:lumOff>
<a:alpha>

这些属性应与 ColorTransformation 相关:

IAutoShape shape;
ITextFrame textFrame = shape.getTextFrame();
IPortionFormat portionFormat = textFrame.getParagraphs().get_Item(0).getParagraphFormat().getDefaultPortionFormat();
...
IColorOperationCollection colorTransform = portionFormat.getFillFormat().getGradientFormat().getGradientStops().get_Item(0).getColor().getColorTransform();
for (IColorOperation colorOperation : colorTransform)
{
    System.out.println(colorOperation.getOperationType() + " : " + colorOperation.getParameter());
}

<a:effectLst>

此属性应与 3DFormat 相关:

IAutoShape shape;
ITextFrame textFrame = shape.getTextFrame();
IPortionFormat portionFormat = textFrame.getParagraphs().get_Item(0).getParagraphFormat().getDefaultPortionFormat();
...
portionFormat.getEffectFormat().enableOuterShadowEffect();
portionFormat.getEffectFormat().getOuterShadowEffect().getShadowColor().setColor(Color.BLACK);
portionFormat.getEffectFormat().getOuterShadowEffect().setScaleHorizontal(100);
portionFormat.getEffectFormat().getOuterShadowEffect().setScaleVertical(65);
portionFormat.getEffectFormat().getOuterShadowEffect().setBlurRadius(4.73);
portionFormat.getEffectFormat().getOuterShadowEffect().setDirection(230);
portionFormat.getEffectFormat().getOuterShadowEffect().setDistance(2);
portionFormat.getEffectFormat().getOuterShadowEffect().setSkewHorizontal(30);
portionFormat.getEffectFormat().getOuterShadowEffect().setSkewVertical(0);
portionFormat.getEffectFormat().getOuterShadowEffect().getShadowColor().getColorTransform().add(ColorTransformOperation.SetAlpha, 0.32f);

uFillTx
uLnTx

这些属性来自另一个文档(Word、Excel、PowerPoint),因为它们的末尾带有 Tx。它们描述了下划线继承的规则。

IAutoShape shape;
ITextFrame textFrame = shape.getTextFrame();
IPortionFormat portionFormat = textFrame.getParagraphs().get_Item(0).getParagraphFormat().getDefaultPortionFormat();
...
portionFormat.setFontUnderline(TextUnderlineType.NotDefined);