Obtenir tout le texte dans une diapositive
Contents
[
Hide
]
OpenXML SDK
string FilePath = @"..\..\..\..\Sample Files\";
string FileName = FilePath + "Obtenir tout le texte dans une diapositive.pptx";
foreach (string s in GetAllTextInSlide(FileName, 0))
Console.WriteLine(s);
Console.ReadKey();
// Obtenir tout le texte dans une diapositive.
public static string[] GetAllTextInSlide(string presentationFile, int slideIndex)
{
// Ouvrir la présentation en lecture seule.
using (PresentationDocument presentationDocument = PresentationDocument.Open(presentationFile, false))
{
// Passer la présentation et l'index de la diapositive
// à la prochaine méthode GetAllTextInSlide, et
// puis retourner le tableau de chaînes qu'elle renvoie.
return GetAllTextInSlide(presentationDocument, slideIndex);
}
}
public static string[] GetAllTextInSlide(PresentationDocument presentationDocument, int slideIndex)
{
// Vérifier que le document de présentation existe.
if (presentationDocument == null)
{
throw new ArgumentNullException("presentationDocument");
}
// Vérifier que l'index de la diapositive est dans les limites.
if (slideIndex < 0)
{
throw new ArgumentOutOfRangeException("slideIndex");
}
// Obtenir la partie de présentation du document de présentation.
PresentationPart presentationPart = presentationDocument.PresentationPart;
// Vérifier que la partie de présentation et la présentation existent.
if (presentationPart != null && presentationPart.Presentation != null)
{
// Obtenir l'objet Presentation à partir de la partie de présentation.
Presentation presentation = presentationPart.Presentation;
// Vérifier que la liste des ID de diapositive existe.
if (presentation.SlideIdList != null)
{
// Obtenir la collection des ID de diapositive à partir de la liste des ID de diapositive.
DocumentFormat.OpenXml.OpenXmlElementList slideIds =
presentation.SlideIdList.ChildElements;
// Si l'ID de diapositive est dans les limites...
if (slideIndex < slideIds.Count)
{
// Obtenir l'ID de relation de la diapositive.
string slidePartRelationshipId = (slideIds[slideIndex] as SlideId).RelationshipId;
// Obtenir la partie de diapositive spécifiée à partir de l'ID de relation.
SlidePart slidePart =
(SlidePart)presentationPart.GetPartById(slidePartRelationshipId);
// Passer la partie de diapositive à la prochaine méthode, et
// puis retourner le tableau de chaînes que cette méthode
// renvoie à la méthode précédente.
return GetAllTextInSlide(slidePart);
}
}
}
// Sinon, retourner null.
return null;
}
public static string[] GetAllTextInSlide(SlidePart slidePart)
{
// Vérifier que la partie de diapositive existe.
if (slidePart == null)
{
throw new ArgumentNullException("slidePart");
}
// Créer une nouvelle liste chaînée de chaînes.
LinkedList<string> texts = new LinkedList<string>();
// Si la diapositive existe...
if (slidePart.Slide != null)
{
// Parcourir tous les paragraphes dans la diapositive.
foreach (DocumentFormat.OpenXml.Drawing.Paragraph paragraph in
slidePart.Slide.Descendants<DocumentFormat.OpenXml.Drawing.Paragraph>())
{
// Créer un nouveau constructeur de chaîne.
StringBuilder paragraphText = new StringBuilder();
// Parcourir les lignes du paragraphe.
foreach (DocumentFormat.OpenXml.Drawing.Text text in
paragraph.Descendants<DocumentFormat.OpenXml.Drawing.Text>())
{
// Ajouter chaque ligne aux lignes précédentes.
paragraphText.Append(text.Text);
}
if (paragraphText.Length > 0)
{
// Ajouter chaque paragraphe à la liste chaînée.
texts.AddLast(paragraphText.ToString());
}
}
}
if (texts.Count > 0)
{
// Retourner un tableau de chaînes.
return texts.ToArray();
}
else
{
return null;
}
}
Aspose.Slides
string FilePath = @"..\..\..\..\Sample Files\";
string FileName = FilePath + "Obtenir tout le texte dans une diapositive.pptx";
foreach (string s in GetAllTextInSlide(FileName, 0))
Console.WriteLine(s);
Console.ReadKey();
// Obtenir tout le texte dans une diapositive.
public static List<string> GetAllTextInSlide(string presentationFile, int slideIndex)
{
// Créer une nouvelle liste chaînée de chaînes.
List<string> texts = new List<string>();
// Instancier la classe PresentationEx qui représente PPTX
using (Presentation pres = new Presentation(presentationFile))
{
// Accéder à la diapositive
ISlide sld = pres.Slides[slideIndex];
// Parcourir les formes pour trouver l'espace réservé
foreach (Shape shp in sld.Shapes)
if (shp.Placeholder != null)
{
// obtenir le texte de chaque espace réservé
texts.Add(((AutoShape)shp).TextFrame.Text);
}
}
// Retourner un tableau de chaînes.
return texts;
}