Android पर प्रस्तुति थीम प्रबंधित करें

परिचय

एक प्रस्तुति थीम डिजाइन तत्वों की गुणधर्मों को परिभाषित करती है। जब आप एक प्रस्तुति थीम चुनते हैं, तो आप मूल रूप से दृश्य तत्वों और उनके गुणधर्मों का एक विशिष्ट सेट चुन रहे होते हैं।

PowerPoint में, एक थीम रंगों, फ़ॉन्ट्स, पृष्ठभूमि शैलियाँ, और प्रभावों को शामिल करती है।

theme-constituents

थीम रंग बदलें

PowerPoint थीम स्लाइड पर विभिन्न तत्वों के लिए विशिष्ट रंगों का सेट उपयोग करती है। यदि आपको रंग पसंद नहीं हैं, तो आप थीम के लिए नए रंग लागू करके उन्हें बदल सकते हैं। नई थीम रंग चुनने के लिए, Aspose.Slides SchemeColor गणना में मान प्रदान करता है।

यह Java कोड दिखाता है कि कैसे थीम के लिए एक्सेंट रंग बदलें:

Presentation pres = new Presentation();
try {
    IAutoShape shape = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle, 10, 10, 100, 100);

    shape.getFillFormat().setFillType(FillType.Solid);

    shape.getFillFormat().getSolidFillColor().setSchemeColor(SchemeColor.Accent4);
} finally {
    if (pres != null) pres.dispose();
}

आप इस प्रकार परिणामी रंग का प्रभावी मान निर्धारित कर सकते हैं:

IFillFormatEffectiveData fillEffective = shape.getFillFormat().getEffective();

Color effectiveColor = fillEffective.getSolidFillColor();

System.out.println(String.format("Color [A=%d, R=%d, G=%d, B=%d]", 
        effectiveColor.getAlpha(), effectiveColor.getRed(), effectiveColor.getGreen(), effectiveColor.getBlue()));

रंग परिवर्तन ऑपरेशन को और स्पष्ट करने के लिए, हम एक अन्य तत्व बनाते हैं और उसे प्रारंभिक ऑपरेशन से प्राप्त एक्सेंट रंग असाइन करते हैं। फिर हम थीम में रंग बदलते हैं:

IAutoShape otherShape = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle, 10, 120, 100, 100);

otherShape.getFillFormat().setFillType(FillType.Solid);

otherShape.getFillFormat().getSolidFillColor().setSchemeColor(SchemeColor.Accent4);

pres.getMasterTheme().getColorScheme().getAccent4().setColor(Color.RED);

नया रंग दोनों तत्वों पर स्वतः लागू हो जाता है।

अतिरिक्त पैलेट से थीम रंग सेट करें

जब आप मुख्य थीम रंग (1) पर प्रकाशता रूपांतरण लागू करते हैं, तो अतिरिक्त पैलेट (2) से रंग बनते हैं। आप फिर उन थीम रंगों को सेट और प्राप्त कर सकते हैं।

additional-palette-colors

1 - मुख्य थीम रंग
2 - अतिरिक्त पैलेट के रंग।

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    // एक्सेंट 4
    IShape shape1 = slide.getShapes().addAutoShape(ShapeType.Rectangle, 10, 10, 50, 50);

    shape1.getFillFormat().setFillType(FillType.Solid);
    shape1.getFillFormat().getSolidFillColor().setSchemeColor(SchemeColor.Accent4);

    // एक्सेंट 4, हल्का 80%
    IShape shape2 = slide.getShapes().addAutoShape(ShapeType.Rectangle, 10, 70, 50, 50);

    shape2.getFillFormat().setFillType(FillType.Solid);
    shape2.getFillFormat().getSolidFillColor().setSchemeColor(SchemeColor.Accent4);
    shape2.getFillFormat().getSolidFillColor().getColorTransform().add(ColorTransformOperation.MultiplyLuminance, 0.2f);
    shape2.getFillFormat().getSolidFillColor().getColorTransform().add(ColorTransformOperation.AddLuminance, 0.8f);

    // एक्सेंट 4, हल्का 60%
    IShape shape3 = slide.getShapes().addAutoShape(ShapeType.Rectangle, 10, 130, 50, 50);

    shape3.getFillFormat().setFillType(FillType.Solid);
    shape3.getFillFormat().getSolidFillColor().setSchemeColor(SchemeColor.Accent4);
    shape3.getFillFormat().getSolidFillColor().getColorTransform().add(ColorTransformOperation.MultiplyLuminance, 0.4f);
    shape3.getFillFormat().getSolidFillColor().getColorTransform().add(ColorTransformOperation.AddLuminance, 0.6f);

    // एक्सेंट 4, हल्का 40%
    IShape shape4 = slide.getShapes().addAutoShape(ShapeType.Rectangle, 10, 190, 50, 50);

    shape4.getFillFormat().setFillType(FillType.Solid);
    shape4.getFillFormat().getSolidFillColor().setSchemeColor(SchemeColor.Accent4);
    shape4.getFillFormat().getSolidFillColor().getColorTransform().add(ColorTransformOperation.MultiplyLuminance, 0.6f);
    shape4.getFillFormat().getSolidFillColor().getColorTransform().add(ColorTransformOperation.AddLuminance, 0.4f);

    // एक्सेंट 4, गहरा 25%
    IShape shape5 = slide.getShapes().addAutoShape(ShapeType.Rectangle, 10, 250, 50, 50);

    shape5.getFillFormat().setFillType(FillType.Solid);
    shape5.getFillFormat().getSolidFillColor().setSchemeColor(SchemeColor.Accent4);
    shape5.getFillFormat().getSolidFillColor().getColorTransform().add(ColorTransformOperation.MultiplyLuminance, 0.75f);

    // एक्सेंट 4, गहरा 50%
    IShape shape6 = slide.getShapes().addAutoShape(ShapeType.Rectangle, 10, 310, 50, 50);

    shape6.getFillFormat().setFillType(FillType.Solid);
    shape6.getFillFormat().getSolidFillColor().setSchemeColor(SchemeColor.Accent4);
    shape6.getFillFormat().getSolidFillColor().getColorTransform().add(ColorTransformOperation.MultiplyLuminance, 0.5f);

    presentation.save(path + "example_accent4.pptx", SaveFormat.Pptx);
} finally {
    if (presentation != null) presentation.dispose();
}

SchemeColor को IColorScheme रंगों से मैप करें

जब आप SchemeColor के साथ काम करते हैं, तो आप देख सकते हैं कि इसमें निम्नलिखित थीम रंग मान होते हैं: Background1, Background2, Text1, और Text2

हालांकि, Presentation.getMasterTheme().getColorScheme() IColorScheme लौटाता है, जो संबंधित रंगों को इस प्रकार प्रदर्शित करता है: Dark1, Dark2, Light1, और Light2

यह अंतर केवल नामकरण में है। ये मान एक ही थीम रंग स्लॉट को संदर्भित करते हैं और मैपिंग स्थिर है:

  • Text1 = Dark1
  • Background1 = Light1
  • Text2 = Dark2
  • Background2 = Light2

Text/Background और Dark/Light के बीच कोई गतिशील रूपांतरण नहीं है। वे केवल एक ही थीम रंगों के वैकल्पिक नाम हैं।

यह नामकरण अंतर Microsoft Office शब्दावली से आया है। पुराने Office संस्करणों में Dark 1, Light 1, Dark 2, और Light 2 उपयोग किए जाते थे, जबकि नए UI संस्करण समान स्लॉट को Text 1, Background 1, Text 2, और Background 2 के रूप में प्रदर्शित करते हैं।

थीम फ़ॉन्ट बदलें

आपको थीम और अन्य उद्देश्यों के लिए फ़ॉन्ट चुनने की सुविधा देने के लिए, Aspose.Slides इन विशेष पहचानकर्ताओं का उपयोग करता है (PowerPoint में उपयोग किए जाने वाले के समान):

  • +mn-lt - बॉडी फ़ॉन्ट लैटिन (छोटा लैटिन फ़ॉन्ट)
  • +mj-lt - हेडिंग फ़ॉन्ट लैटिन (मुख्य लैटिन फ़ॉन्ट)
  • +mn-ea - बॉडी फ़ॉन्ट ईस्ट एशियन (छोटा ईस्ट एशियन फ़ॉन्ट)
  • +mj-ea - बॉडी फ़ॉन्ट ईस्ट एशियन (मुख्य ईस्ट एशियन फ़ॉन्ट)

यह Java कोड दर्शाता है कि कैसे लैटिन फ़ॉन्ट को एक थीम तत्व को असाइन करें:

IAutoShape shape = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle, 10, 10, 100, 100);

Paragraph paragraph = new Paragraph();

Portion portion = new Portion("Theme text format");

paragraph.getPortions().add(portion);

shape.getTextFrame().getParagraphs().add(paragraph);

portion.getPortionFormat().setLatinFont(new FontData("+mn-lt"));

यह Java कोड दर्शाता है कि कैसे प्रस्तुति थीम फ़ॉन्ट बदलें:

pres.getMasterTheme().getFontScheme().getMinor().setLatinFont(new FontData("Arial"));

सभी टेक्स्ट बॉक्स में फ़ॉन्ट अपडेट हो जाएगा।

थीम पृष्ठभूमि शैली बदलें

डिफ़ॉल्ट रूप से, PowerPoint ऐप 12 पूर्वनिर्धारित पृष्ठभूमियां प्रदान करता है, लेकिन उन 12 पृष्ठभूमियों में से केवल 3 ही एक सामान्य प्रस्तुति में सहेजी जाती हैं।

todo:image_alt_text

उदाहरण के लिए, PowerPoint ऐप में प्रस्तुति सहेजने के बाद, आप इस Java कोड को चलाकर प्रस्तुति में पूर्वनिर्धारित पृष्ठभूमियों की संख्या पता कर सकते हैं:

Presentation pres = new Presentation("pres.pptx");
try {
    int numberOfBackgroundFills = pres.getMasterTheme().getFormatScheme().getBackgroundFillStyles().size();

    System.out.println("Number of background fill styles for theme is " + numberOfBackgroundFills);
} finally {
    if (pres != null) pres.dispose();
}

यह Java कोड दर्शाता है कि कैसे प्रस्तुति के लिए पृष्ठभूमि सेट करें:

pres.getMasters().get_Item(0).getBackground().setStyleIndex(2);

इंडेक्स गाइड: 0 को बिना फ़िल के उपयोग किया जाता है। इंडेक्स 1 से शुरू होता है।

थीम प्रभाव बदलें

एक PowerPoint थीम आम तौर पर प्रत्येक शैली सरणी के लिए 3 मान रखती है। उन सरणियों को मिलाकर ये 3 प्रभाव बनते हैं: सूक्ष्म, मध्यम, और तीव्र। उदाहरण के लिए, जब प्रभाव किसी विशिष्ट आकार पर लागू होते हैं तो परिणाम इस प्रकार होता है:

todo:image_alt_text

आप FillStyles, LineStyles, EffectStyles को FormatScheme क्लास से उपयोग करके थीम में तत्व बदल सकते हैं (PowerPoint विकल्पों से भी अधिक लचीले ढंग से)।

Presentation pres = new Presentation("Subtle_Moderate_Intense.pptx");
try {
    pres.getMasterTheme().getFormatScheme().getLineStyles().get_Item(0).getFillFormat().getSolidFillColor().setColor(Color.RED);

    pres.getMasterTheme().getFormatScheme().getFillStyles().get_Item(2).setFillType(FillType.Solid);

    pres.getMasterTheme().getFormatScheme().getFillStyles().get_Item(2).getSolidFillColor().setColor(Color.GREEN);

    pres.getMasterTheme().getFormatScheme().getEffectStyles().get_Item(2).getEffectFormat().getOuterShadowEffect().setDistance(10f);

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

फलस्वरूप भराव रंग, भराव प्रकार, शैडो प्रभाव आदि में परिवर्तन:

todo:image_alt_text

अक्सर पूछे जाने वाले प्रश्न

क्या मैं मास्टर को बदले बिना एकल स्लाइड पर थीम लागू कर सकता हूँ?

हाँ। Aspose.Slides स्लाइड-स्तर थीम ओवरराइड का समर्थन करता है, इसलिए आप केवल उस स्लाइड पर स्थानीय थीम लागू कर सकते हैं जबकि मास्टर थीम को बरकरार रख सकते हैं (SlideThemeManager के माध्यम से)।

एक प्रस्तुति से दूसरी प्रस्तुति में थीम ले जाने का सबसे सुरक्षित तरीका क्या है?

Clone slides को उनके मास्टर के साथ लक्ष्य प्रस्तुति में ले जाएँ। इससे मूल मास्टर, लेआउट और संबंधित थीम संरक्षित रहती है ताकि दृश्य समान बना रहे।

सभी विरासत और ओवरराइड के बाद “इफेक्टिव” मान कैसे देखें?

थीम/रंग/फ़ॉन्ट/प्रभाव के लिए API की “effective” views का उपयोग करें। यह मास्टर एवं किसी भी स्थानीय ओवरराइड लागू करने के बाद हल किए गए अंतिम गुण वापस करता है।