Gérer TextBox
Les textes sur les diapositives existent généralement dans des zones de texte ou des formes. Par conséquent, pour ajouter un texte à une diapositive, vous devez ajouter une zone de texte et ensuite y mettre du texte. Aspose.Slides pour Java fournit l’interface IAutoShape qui vous permet d’ajouter une forme contenant du texte.
Info
Aspose.Slides fournit également l’interface IShape qui vous permet d’ajouter des formes aux diapositives. Cependant, toutes les formes ajoutées via l’interfaceIShape
ne peuvent pas contenir de texte. Mais les formes ajoutées via l’interface IAutoShape peuvent contenir du texte.
Note
Par conséquent, lorsque vous manipulez une forme à laquelle vous souhaitez ajouter du texte, vous devez vérifier et confirmer qu’elle a été castée via l’interfaceIAutoShape
. Ce n’est qu’alors que vous pourrez travailler avec TextFrame, qui est une propriété sous IAutoShape
. Consultez la section Mettre à jour le texte sur cette page.
Créer une zone de texte sur la diapositive
Pour créer une zone de texte sur une diapositive, suivez ces étapes :
- Créez une instance de la classe Presentation.
- Obtenez une référence pour la première diapositive dans la présentation nouvellement créée.
- Ajoutez un objet IAutoShape avec le ShapeType défini comme
Rectangle
à une position spécifiée sur la diapositive et obtenez la référence de l’objetIAutoShape
nouvellement ajouté. - Ajoutez une propriété
TextFrame
à l’objetIAutoShape
qui contiendra un texte. Dans l’exemple ci-dessous, nous avons ajouté ce texte : Aspose TextBox - Enfin, écrivez le fichier PPTX via l’objet
Presentation
.
Ce code Java—une implémentation des étapes ci-dessus—vous montre comment ajouter du texte à une diapositive :
// Instantiates Presentation
Presentation pres = new Presentation();
try {
// Gets the first slide in the presentation
ISlide sld = pres.getSlides().get_Item(0);
// Adds an AutoShape with type set as Rectangle
IAutoShape ashp = sld.getShapes().addAutoShape(ShapeType.Rectangle, 150, 75, 150, 50);
// Adds TextFrame to the Rectangle
ashp.addTextFrame(" ");
// Accesses the text frame
ITextFrame txtFrame = ashp.getTextFrame();
// Creates the Paragraph object for text frame
IParagraph para = txtFrame.getParagraphs().get_Item(0);
// Creates a Portion object for paragraph
IPortion portion = para.getPortions().get_Item(0);
// Sets Text
portion.setText("Aspose TextBox");
// Saves the presentation to disk
pres.save("TextBox_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Vérifier si c’est une forme de zone de texte
Aspose.Slides fournit la propriété isTextBox() (de la classe AutoShape) pour vous permettre d’examiner les formes et de trouver des zones de texte.
Ce code Java vous montre comment vérifier si une forme a été créée en tant que zone de texte :
Presentation pres = new Presentation("pres.pptx");
try {
ForEach.shape(pres, (shape, slide, index) ->
{
if (shape instanceof AutoShape)
{
AutoShape autoShape = (AutoShape)shape;
System.out.println(autoShape.isTextBox() ? "la forme est une zone de texte" : "la forme n'est pas une zone de texte");
}
});
} finally {
if (pres != null) pres.dispose();
}
Ajouter une colonne dans une zone de texte
Aspose.Slides fournit les propriétés ColumnCount et ColumnSpacing (de l’interface ITextFrameFormat et de la classe TextFrameFormat) qui vous permettent d’ajouter des colonnes aux zones de texte. Vous pouvez spécifier le nombre de colonnes dans une zone de texte et définir l’espacement en points entre les colonnes.
Ce code en Java démontre l’opération décrite :
Presentation pres = new Presentation();
try {
// Gets the first slide in the presentation
ISlide slide = pres.getSlides().get_Item(0);
// Add an AutoShape with type set as Rectangle
IAutoShape aShape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 100, 100, 300, 300);
// Add TextFrame to the Rectangle
aShape.addTextFrame("Toutes ces colonnes sont limitées à être à l'intérieur d'un seul conteneur de texte -- " +
"vous pouvez ajouter ou supprimer du texte et le nouveau texte ou le texte restant s'ajuste automatiquement " +
"pour s'écouler à l'intérieur du conteneur. Vous ne pouvez pas faire couler du texte d'un conteneur " +
"à un autre -- nous vous avons dit que les options de colonnes de PowerPoint pour le texte sont limitées !");
// Gets the text format of TextFrame
ITextFrameFormat format = aShape.getTextFrame().getTextFrameFormat();
// Specifies the number of columns in TextFrame
format.setColumnCount(3);
// Specifies the spacing between columns
format.setColumnSpacing(10);
// Saves the presentation
pres.save("ColumnCount.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Ajouter une colonne dans un cadre de texte
Aspose.Slides pour Java fournit la propriété ColumnCount (de l’interface ITextFrameFormat) qui vous permet d’ajouter des colonnes dans des cadres de texte. Grâce à cette propriété, vous pouvez spécifier votre nombre de colonnes préféré dans un cadre de texte.
Ce code Java vous montre comment ajouter une colonne à l’intérieur d’un cadre de texte :
String outPptxFileName = "ColumnsTest.pptx";
Presentation pres = new Presentation();
try {
IAutoShape shape1 = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle, 100, 100, 300, 300);
TextFrameFormat format = (TextFrameFormat)shape1.getTextFrame().getTextFrameFormat();
format.setColumnCount(2);
shape1.getTextFrame().setText("Toutes ces colonnes sont forcées de rester à l'intérieur d'un seul conteneur de texte -- " +
"vous pouvez ajouter ou supprimer du texte - et le nouveau texte ou le texte restant s'ajuste automatiquement " +
"pour rester à l'intérieur du conteneur. Vous ne pouvez pas avoir du texte débordant d'un conteneur " +
"à un autre, cependant -- parce que les options de colonnes de PowerPoint pour le texte sont limitées !");
pres.save(outPptxFileName, SaveFormat.Pptx);
Presentation test = new Presentation(outPptxFileName);
try {
IAutoShape autoShape = ((AutoShape)test.getSlides().get_Item(0).getShapes().get_Item(0));
Assert.assertTrue(2 == autoShape.getTextFrame().getTextFrameFormat().getColumnCount());
Assert.assertTrue(Double.NaN == autoShape.getTextFrame().getTextFrameFormat().getColumnSpacing());
} finally {
if (test != null) test.dispose();
}
format.setColumnSpacing(20);
pres.save(outPptxFileName, SaveFormat.Pptx);
Presentation test1 = new Presentation(outPptxFileName);
try {
IAutoShape autoShape = ((AutoShape)test1.getSlides().get_Item(0).getShapes().get_Item(0));
Assert.assertTrue(2 == autoShape.getTextFrame().getTextFrameFormat().getColumnCount());
Assert.assertTrue(20 == autoShape.getTextFrame().getTextFrameFormat().getColumnSpacing());
} finally {
if (test1 != null) test1.dispose();
}
format.setColumnCount(3);
format.setColumnSpacing(15);
pres.save(outPptxFileName, SaveFormat.Pptx);
Presentation test2 = new Presentation(outPptxFileName);
try {
IAutoShape autoShape = ((AutoShape)test2.getSlides().get_Item(0).getShapes().get_Item(0));
Assert.assertTrue(3 == autoShape.getTextFrame().getTextFrameFormat().getColumnCount());
Assert.assertTrue(15 == autoShape.getTextFrame().getTextFrameFormat().getColumnSpacing());
} finally {
if (test2 != null) test2.dispose();
}
} finally {
if (pres != null) pres.dispose();
}
Mettre à jour le texte
Aspose.Slides vous permet de changer ou de mettre à jour le texte contenu dans une zone de texte ou tous les textes contenus dans une présentation.
Ce code Java démontre une opération où tous les textes dans une présentation sont mis à jour ou changés :
Presentation pres = new Presentation("text.pptx");
try {
for (ISlide slide : pres.getSlides())
{
for (IShape shape : slide.getShapes())
{
if (shape instanceof IAutoShape) //Vérifie si la forme supporte le cadre de texte (IAutoShape).
{
IAutoShape autoShape = (IAutoShape)shape;
for (IParagraph paragraph : autoShape.getTextFrame().getParagraphs()) //Itère à travers les paragraphes dans le cadre de texte
{
for (IPortion portion : paragraph.getPortions()) //Itère à travers chaque portion dans le paragraphe
{
portion.setText(portion.getText().replace("years", "months")); //Change le texte
portion.getPortionFormat().setFontBold(NullableBool.True); //Change la mise en forme
}
}
}
}
}
//Sauvegarde la présentation modifiée
pres.save("text-changed.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Ajouter une zone de texte avec un lien hypertexte
Vous pouvez insérer un lien à l’intérieur d’une zone de texte. Lorsque la zone de texte est cliquée, les utilisateurs sont redirigés pour ouvrir le lien.
Pour ajouter une zone de texte contenant un lien, suivez ces étapes :
- Créez une instance de la classe
Presentation
. - Obtenez une référence pour la première diapositive dans la présentation nouvellement créée.
- Ajoutez un objet
AutoShape
avecShapeType
défini commeRectangle
à une position spécifiée sur la diapositive et obtenez une référence de l’objet AutoShape nouvellement ajouté. - Ajoutez un
TextFrame
à l’objetAutoShape
qui contient Aspose TextBox comme texte par défaut. - Instanciez la classe
IHyperlinkManager
. - Assignez l’objet
IHyperlinkManager
à la propriété HyperlinkClick associée à la portion de votre choix duTextFrame
. - Enfin, écrivez le fichier PPTX via l’objet
Presentation
.
Ce code Java—une implémentation des étapes ci-dessus—vous montre comment ajouter une zone de texte avec un lien hypertexte à une diapositive :
// Instantiates a Presentation class that represents a PPTX
Presentation pres = new Presentation();
try {
// Gets the first slide in the presentation
ISlide slide = pres.getSlides().get_Item(0);
// Adds an AutoShape object with type set as Rectangle
IShape shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 150, 150, 150, 50);
// Casts the shape to AutoShape
IAutoShape pptxAutoShape = (IAutoShape)shape;
// Accesses the ITextFrame property associated with the AutoShape
pptxAutoShape.addTextFrame("");
ITextFrame textFrame = pptxAutoShape.getTextFrame();
// Adds some text to the frame
textFrame.getParagraphs().get_Item(0).getPortions().get_Item(0).setText("Aspose.Slides");
// Sets the Hyperlink for the portion text
IHyperlinkManager hyperlinkManager = textFrame.getParagraphs().get_Item(0).getPortions().get_Item(0).
getPortionFormat().getHyperlinkManager();
hyperlinkManager.setExternalHyperlinkClick("http://www.aspose.com");
// Saves the PPTX Presentation
pres.save("hLink_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}