Alakzat hatékony tulajdonságainak lekérése prezentációkból Java-ban
Áttekintés
Ez a téma a helyi és hatékony tulajdonságok közötti különbséget magyarázza. A helyi értékek azok az értékek, amelyeket közvetlenül egy adott formázási szinten állítanak be, például:
- Részlet tulajdonságok egy dián.
- Prototípus alakzat szövegstílusok egy elrendezésen vagy mester diámon, ha a részlet szövegkeret alakzatának van ilyen.
- Globális szövegbeállítások egy prezentációban.
A helyi értékek bármely szinten definiálhatók vagy elhagyhatók. Amikor az Aspose.Slidesnek a végső, „rendereltként megjelenő” formázásra van szüksége, feloldja az öröklődési láncot, és hatékony értékeket ad vissza. Ezeket a helyi formátumobjektum getEffective metódusának meghívásával kaphatja meg.
A következő példa azt mutatja, hogyan lehet lekérni a hatékony értékeket. Feltételezi, hogy az első dia első alakzata egy IAutoShape egy szövegkerettel és legalább egy résszel.
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape shape = (IAutoShape)slide.getShapes().get_Item(0);
ITextFrameFormat localTextFrameFormat = shape.getTextFrame().getTextFrameFormat();
ITextFrameFormatEffectiveData effectiveTextFrameFormat = localTextFrameFormat.getEffective();
IParagraph paragraph = shape.getTextFrame().getParagraphs().get_Item(0);
IPortion portion = paragraph.getPortions().get_Item(0);
IPortionFormat localPortionFormat = portion.getPortionFormat();
IPortionFormatEffectiveData effectivePortionFormat = localPortionFormat.getEffective();
} finally {
presentation.dispose();
}
getEffective újbóli meghívása a szülő vagy örökölt formázás módosítása után frissítheti a gyorsítótárat, és egy korábban lekért objektum már nem feltétlenül tükrözi a korábbi állapotot. Ha a hatékony értékeket későbbi újbóli felhasználásra szeretné megőrizni, másolja a szükséges tulajdonságokat, például betűmagasságot, kitöltőszínt, betűstílust vagy igazítást a saját adatobjektumába.
Kamera hatékony tulajdonságainak lekérése
Az Aspose.Slides lehetővé teszi a kamera hatékony tulajdonságainak lekérését. A ICameraEffectiveData interfész egy immutábilis objektumot képvisel, amely a kamera hatékony tulajdonságait tartalmazza. Egy ICameraEffectiveData példány a IThreeDFormatEffectiveData segítségével érhető el, amely hatékony értékeket biztosít a IThreeDFormat számára.
A következő kódrészlet bemutatja, hogyan lehet a kamera hatékony tulajdonságait lekérni. Feltételezi, hogy az első dia első alakzatában 3D formázás van.
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IShape shape = slide.getShapes().get_Item(0);
IThreeDFormatEffectiveData threeDEffectiveData = shape.getThreeDFormat().getEffective();
ICameraEffectiveData cameraEffectiveData = threeDEffectiveData.getCamera();
int cameraType = cameraEffectiveData.getCameraType();
double fieldOfViewAngle = cameraEffectiveData.getFieldOfViewAngle();
double zoom = cameraEffectiveData.getZoom();
System.out.println("= Effective camera properties =");
System.out.println("Type: " + cameraType);
System.out.println("Field of view: " + fieldOfViewAngle);
System.out.println("Zoom: " + zoom);
} finally {
presentation.dispose();
}
A fényrig hatékony tulajdonságainak lekérése
Az Aspose.Slides lehetővé teszi egy fényrig hatékony tulajdonságainak lekérését. Az ILightRigEffectiveData interfész egy immutábilis objektum, amely a fényrig hatékony tulajdonságait tartalmazza. Egy ILightRigEffectiveData példány a IThreeDFormatEffectiveData által érhető el, amely hatékony értékeket ad a IThreeDFormat.
Az alábbi kódrészlet bemutatja, hogyan lehet a fényrig hatékony tulajdonságait lekérni. Feltételezi, hogy az első dia első alakzatában 3D formázás van.
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IShape shape = slide.getShapes().get_Item(0);
IThreeDFormatEffectiveData threeDEffectiveData = shape.getThreeDFormat().getEffective();
ILightRigEffectiveData lightRigEffectiveData = threeDEffectiveData.getLightRig();
int lightType = lightRigEffectiveData.getLightType();
int direction = lightRigEffectiveData.getDirection();
System.out.println("= Effective light rig properties =");
System.out.println("Type: " + lightType);
System.out.println("Direction: " + direction);
} finally {
presentation.dispose();
}
A bevel alakzat hatékony tulajdonságainak lekérése
Az Aspose.Slides lehetővé teszi a bevel alakzat hatékony tulajdonságainak lekérését. A IShapeBevelEffectiveData interfész egy immutábilis objektum, amely egy alakzat hatékony felületrelief tulajdonságait tartalmazza. Egy IShapeBevelEffectiveData példány a IThreeDFormatEffectiveData által érhető el, amely hatékony értékeket biztosít a IThreeDFormat számára.
Az alábbi kódrészlet bemutatja, hogyan lehet egy alakzat felső beveljének hatékony tulajdonságait lekérni. Feltételezi, hogy az első dia első alakzatában 3D formázás van.
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IShape shape = slide.getShapes().get_Item(0);
IThreeDFormatEffectiveData threeDEffectiveData = shape.getThreeDFormat().getEffective();
IShapeBevelEffectiveData bevelTop = threeDEffectiveData.getBevelTop();
int bevelType = bevelTop.getBevelType();
double bevelWidth = bevelTop.getWidth();
double bevelHeight = bevelTop.getHeight();
System.out.println("= Effective shape's top face relief properties =");
System.out.println("Type: " + bevelType);
System.out.println("Width: " + bevelWidth);
System.out.println("Height: " + bevelHeight);
} finally {
presentation.dispose();
}
A szövegkeret hatékony tulajdonságainak lekérése
Az Aspose.Slides segítségével lekérheti egy szövegkeret hatékony tulajdonságait. A ITextFrameFormatEffectiveData interfész a szövegkeret hatékony formázási tulajdonságait tartalmazza.
A következő kódrészlet bemutatja, hogyan lehet a szövegkeret hatékony formázási tulajdonságait lekérni. Feltételezi, hogy az első dia első alakzata egy IAutoShape egy szövegkerettel.
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape shape = (IAutoShape)slide.getShapes().get_Item(0);
ITextFrameFormat textFrameFormat = shape.getTextFrame().getTextFrameFormat();
ITextFrameFormatEffectiveData effectiveTextFrameFormat = textFrameFormat.getEffective();
int anchoringType = effectiveTextFrameFormat.getAnchoringType();
int autofitType = effectiveTextFrameFormat.getAutofitType();
int textVerticalType = effectiveTextFrameFormat.getTextVerticalType();
double marginLeft = effectiveTextFrameFormat.getMarginLeft();
double marginTop = effectiveTextFrameFormat.getMarginTop();
double marginRight = effectiveTextFrameFormat.getMarginRight();
double marginBottom = effectiveTextFrameFormat.getMarginBottom();
System.out.println("Anchoring type: " + anchoringType);
System.out.println("Autofit type: " + autofitType);
System.out.println("Text vertical type: " + textVerticalType);
System.out.println("Margins");
System.out.println(" Left: " + marginLeft);
System.out.println(" Top: " + marginTop);
System.out.println(" Right: " + marginRight);
System.out.println(" Bottom: " + marginBottom);
} finally {
presentation.dispose();
}
A szövegstílus hatékony tulajdonságainak lekérése
Az Aspose.Slides segítségével lekérheti egy szövegstílus hatékony tulajdonságait. A ITextStyleEffectiveData interfész a szövegstílus hatékony tulajdonságait tartalmazza.
A következő kódrészlet bemutatja, hogyan lehet a szövegstílus hatékony tulajdonságait lekérni. Feltételezi, hogy az első dia első alakzata egy IAutoShape egy szövegkerettel.
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape shape = (IAutoShape)slide.getShapes().get_Item(0);
ITextStyleEffectiveData effectiveTextStyle = shape.getTextFrame().getTextFrameFormat().getTextStyle().getEffective();
int levelCount = 9;
for (int levelIndex = 0; levelIndex < levelCount; levelIndex++)
{
IParagraphFormatEffectiveData effectiveStyleLevel = effectiveTextStyle.getLevel(levelIndex);
int depth = effectiveStyleLevel.getDepth();
double indent = effectiveStyleLevel.getIndent();
int alignment = effectiveStyleLevel.getAlignment();
int fontAlignment = effectiveStyleLevel.getFontAlignment();
System.out.println("= Effective paragraph formatting for style level #" + levelIndex + " =");
System.out.println("Depth: " + depth);
System.out.println("Indent: " + indent);
System.out.println("Alignment: " + alignment);
System.out.println("Font alignment: " + fontAlignment);
}
} finally {
presentation.dispose();
}
A hatékony betűmagasság értékének lekérése
Az Aspose.Slides segítségével lekérheti a hatékony betűmagasságot. Az alábbi kód bemutatja, hogyan változik egy részlet hatékony betűmagassága, miután a helyi betűmagasság értékeket különböző prezentációs szerkezeti szinteken állították be.
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape autoShape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 100, 100, 400, 75, false);
autoShape.addTextFrame("");
IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
paragraph.getPortions().clear();
IPortion firstPortion = new Portion("Sample text with first portion");
IPortion secondPortion = new Portion(" and second portion.");
paragraph.getPortions().add(firstPortion);
paragraph.getPortions().add(secondPortion);
IPortionFormatEffectiveData firstPortionFormatEffectiveData = firstPortion.getPortionFormat().getEffective();
IPortionFormatEffectiveData secondPortionFormatEffectiveData = secondPortion.getPortionFormat().getEffective();
System.out.println("Effective font height just after creation:");
double firstPortionFontHeight = firstPortionFormatEffectiveData.getFontHeight();
double secondPortionFontHeight = secondPortionFormatEffectiveData.getFontHeight();
System.out.println("Portion #0: " + firstPortionFontHeight);
System.out.println("Portion #1: " + secondPortionFontHeight);
presentation.getDefaultTextStyle().getLevel(0).getDefaultPortionFormat().setFontHeight(24);
firstPortionFormatEffectiveData = firstPortion.getPortionFormat().getEffective();
secondPortionFormatEffectiveData = secondPortion.getPortionFormat().getEffective();
System.out.println("Effective font height after setting the presentation default font height:");
firstPortionFontHeight = firstPortionFormatEffectiveData.getFontHeight();
secondPortionFontHeight = secondPortionFormatEffectiveData.getFontHeight();
System.out.println("Portion #0: " + firstPortionFontHeight);
System.out.println("Portion #1: " + secondPortionFontHeight);
paragraph.getParagraphFormat().getDefaultPortionFormat().setFontHeight(40);
firstPortionFormatEffectiveData = firstPortion.getPortionFormat().getEffective();
secondPortionFormatEffectiveData = secondPortion.getPortionFormat().getEffective();
System.out.println("Effective font height after setting paragraph default font height:");
firstPortionFontHeight = firstPortionFormatEffectiveData.getFontHeight();
secondPortionFontHeight = secondPortionFormatEffectiveData.getFontHeight();
System.out.println("Portion #0: " + firstPortionFontHeight);
System.out.println("Portion #1: " + secondPortionFontHeight);
firstPortion.getPortionFormat().setFontHeight(55);
firstPortionFormatEffectiveData = firstPortion.getPortionFormat().getEffective();
secondPortionFormatEffectiveData = secondPortion.getPortionFormat().getEffective();
System.out.println("Effective font height after setting portion #0 font height:");
firstPortionFontHeight = firstPortionFormatEffectiveData.getFontHeight();
secondPortionFontHeight = secondPortionFormatEffectiveData.getFontHeight();
System.out.println("Portion #0: " + firstPortionFontHeight);
System.out.println("Portion #1: " + secondPortionFontHeight);
secondPortion.getPortionFormat().setFontHeight(18);
firstPortionFormatEffectiveData = firstPortion.getPortionFormat().getEffective();
secondPortionFormatEffectiveData = secondPortion.getPortionFormat().getEffective();
System.out.println("Effective font height after setting portion #1 font height:");
firstPortionFontHeight = firstPortionFormatEffectiveData.getFontHeight();
secondPortionFontHeight = secondPortionFormatEffectiveData.getFontHeight();
System.out.println("Portion #0: " + firstPortionFontHeight);
System.out.println("Portion #1: " + secondPortionFontHeight);
presentation.save("SetLocalFontHeightValues.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Táblázat hatékony kitöltési formátumának lekérése
Az Aspose.Slides segítségével lekérheti a különböző táblázatrészek hatékony kitöltési formázását. A IFillFormatEffectiveData interfész a hatékony kitöltési formázási tulajdonságokat tartalmazza. A cella formázása nagyobb prioritással bír, mint a sorformázás, a sorformázás nagyobb prioritással bír, mint az oszlopformázás, és az oszlopformázás nagyobb prioritással bír, mint a teljes táblázat formázása.
Ennek következtében a ICellFormatEffectiveData tulajdonságait használja a táblázat cellájának rajzolásához. A következő kódrészlet bemutatja, hogyan lehet a táblázat különböző részeinek hatékony kitöltési formázását lekérni. Feltételezi, hogy az első dia első alakzata egy ITable.
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
ITable table = (ITable)slide.getShapes().get_Item(0);
ITableFormatEffectiveData tableFormatEffective = table.getTableFormat().getEffective();
IRowFormatEffectiveData rowFormatEffective = table.getRows().get_Item(0).getRowFormat().getEffective();
IColumnFormatEffectiveData columnFormatEffective = table.getColumns().get_Item(0).getColumnFormat().getEffective();
ICellFormatEffectiveData cellFormatEffective = table.get_Item(0, 0).getCellFormat().getEffective();
IFillFormatEffectiveData tableFillFormatEffective = tableFormatEffective.getFillFormat();
IFillFormatEffectiveData rowFillFormatEffective = rowFormatEffective.getFillFormat();
IFillFormatEffectiveData columnFillFormatEffective = columnFormatEffective.getFillFormat();
IFillFormatEffectiveData cellFillFormatEffective = cellFormatEffective.getFillFormat();
} finally {
presentation.dispose();
}
FAQ
A getEffective egy pillanatképet ad vissza?
Nem mindig. A hatékony adatok a öröklődés alkalmazása után számított formázást képviselik, de egyes hatékony adatobjektumok belsőleg gyorsítótárazottak lehetnek. Egy későbbi getEffective hívás újraszámíthatja a formázást és frissítheti a gyorsítótárat, ezért a korábban lekért objektust nem szabad állandó pillanatképnek tekinteni.
Mikor kell újra lekérni a hatékony tulajdonságokat?
Hívja újra a getEffective metódust a helyi formázás, a szülő stílusok, az elrendezés formázása, a mester formázása vagy a prezentáció szintű alapértelmezések módosítása után. A következő hívás újraértékeli a formázási hierarchiát, és visszaadja az aktuális hatékony eredményt.
A elrendezés/mester dia módosítása vagy eltávolítása befolyásolja-e a már lekért hatékony tulajdonságokat?
Igen, de a változás a következő getEffective híváskor jelenik meg. Ha egy szülő formázási forrás megváltozik vagy eltávolításra kerül, a korábban lekért hatékony adatok elavultak lehetnek. Miután a getEffective újra meghívásra kerül, az Aspose.Slides újraértékeli a formázási fát, és a kapott betűtípusok, színek, méretek vagy egyéb értékek megváltozhatnak.
Módosíthatok-e értékeket a hatékony adatok objektumaiban?
Nem. A hatékony adatok objektumai csak a számított értékeket mutatják. Változtassa meg a helyi formázási objektumokat, majd kérje le újból a hatékony értékeket.
Mi történik, ha egy tulajdonság nincs beállítva az alakzat szintjén, sem az elrendezésen/mesteren, sem a globális beállításokban?
A hatékony értéket az alapértelmezett mechanizmus határozza meg, amely magában foglalja a PowerPoint és az Aspose.Slides alapértelmezéseit. Ez a megoldott érték a jelenlegi hatékony adatok részévé válik.
A hatékony betűértékből megállapítható, hogy melyik szint biztosította a méretet vagy a betűtípust?
Nem közvetlenül. A hatékony adatok a végső értéket adják vissza. A forrás megtalálásához ellenőrizze a helyi értékeket a részlet, bekezdés, szövegkeret és a szövegstílusok szintjén az elrendezésen, a mesteren és a prezentáción, hogy hol jelenik meg az első explicit meghatározás.
Miért tűnnek néha a hatékony értékek azonosnak a helyi értékekkel?
Mert a helyi érték végsővé vált (nem volt szükség magasabb szintű öröklődésre). Ilyen esetekben a hatékony érték megegyezik a helyivel.
Mikor használjak hatékony tulajdonságokat, és mikor csak a helyiékkel dolgozzak?
Használja a hatékony adatokat, amikor az összes öröklődés alkalmazása után a „renderelt” eredményre van szükség, például színek, behúzások vagy méretek egyeztetéséhez. Ha ezeket az értékeket a későbbi formázási változásoktól függetlenül szeretné megőrizni, másolja a szükséges tulajdonságokat saját objektumába. Ha egy adott szinten szeretne formázást módosítani, változtassa meg a helyi tulajdonságokat, majd szükség esetén olvassa újra a hatékony adatokat az eredmény ellenőrzéséhez.