الحصول على عناوين جميع الشرائح
Contents
[
Hide
]
OpenXML SDK
string FilePath = @"..\..\..\..\Sample Files\";
string FileName = FilePath + "الحصول على عناوين جميع الشرائح.pptx";
foreach (string s in GetSlideTitles(FileName))
Console.WriteLine(s);
Console.ReadKey();
// الحصول على قائمة بعناوين جميع الشرائح في العرض التقديمي.
public static IList<string> GetSlideTitles(string presentationFile)
{
// فتح العرض التقديمي للقراءة فقط.
using (PresentationDocument presentationDocument =
PresentationDocument.Open(presentationFile, false))
{
return GetSlideTitles(presentationDocument);
}
}
// الحصول على قائمة بعناوين جميع الشرائح في العرض التقديمي.
public static IList<string> GetSlideTitles(PresentationDocument presentationDocument)
{
if (presentationDocument == null)
{
throw new ArgumentNullException("presentationDocument");
}
// الحصول على كائن PresentationPart من كائن PresentationDocument.
PresentationPart presentationPart = presentationDocument.PresentationPart;
if (presentationPart != null &&
presentationPart.Presentation != null)
{
// الحصول على كائن Presentation من كائن PresentationPart.
Presentation presentation = presentationPart.Presentation;
if (presentation.SlideIdList != null)
{
List<string> titlesList = new List<string>();
// الحصول على عنوان كل شريحة بترتيب الشرائح.
foreach (var slideId in presentation.SlideIdList.Elements<SlideId>())
{
SlidePart slidePart = presentationPart.GetPartById(slideId.RelationshipId) as SlidePart;
// الحصول على عنوان الشريحة.
string title = GetSlideTitle(slidePart);
// يمكن أيضًا إضافة عنوان فارغ.
titlesList.Add(title);
}
return titlesList;
}
}
return null;
}
// الحصول على سلسلة عنوان الشريحة.
public static string GetSlideTitle(SlidePart slidePart)
{
if (slidePart == null)
{
throw new ArgumentNullException("presentationDocument");
}
// إعلان عن فاصل الفقرة.
string paragraphSeparator = null;
if (slidePart.Slide != null)
{
// العثور على جميع أشكال العناوين.
var shapes = from shape in slidePart.Slide.Descendants<Shape>()
where IsTitleShape(shape)
select shape;
StringBuilder paragraphText = new StringBuilder();
foreach (var shape in shapes)
{
// الحصول على النص في كل فقرة في هذه الشكل.
foreach (var paragraph in shape.TextBody.Descendants<D.Paragraph>())
{
// إضافة فاصل سطر.
paragraphText.Append(paragraphSeparator);
foreach (var text in paragraph.Descendants<D.Text>())
{
paragraphText.Append(text.Text);
}
paragraphSeparator = "\n";
}
}
return paragraphText.ToString();
}
return string.Empty;
}
// تحديد ما إذا كانت الشكل هي شكل عنوان.
private static bool IsTitleShape(Shape shape)
{
var placeholderShape = shape.NonVisualShapeProperties.ApplicationNonVisualDrawingProperties.GetFirstChild<PlaceholderShape>();
if (placeholderShape != null && placeholderShape.Type != null && placeholderShape.Type.HasValue)
{
switch ((PlaceholderValues)placeholderShape.Type)
{
// أي شكل عنوان.
case PlaceholderValues.Title:
// عنوان مركزي.
case PlaceholderValues.CenteredTitle:
return true;
default:
return false;
}
}
return false;
}
Aspose.Slides
string FilePath = @"..\..\..\..\Sample Files\";
string FileName = FilePath + "الحصول على جميع النصوص في شريحة.pptx";
int numberOfSlides = CountSlides(FileName);
System.Console.WriteLine("عدد الشرائح = {0}", numberOfSlides);
string slideText;
for (int i = 0; i < numberOfSlides; i++)
{
GetSlideIdAndText(out slideText, FileName, i);
System.Console.WriteLine("الشريحة رقم #{0} تحتوي على: {1}", i + 1, slideText);
}
System.Console.ReadKey();
public static int CountSlides(string presentationFile)
{
// فتح العرض التقديمي للقراءة فقط.
using (PresentationDocument presentationDocument = PresentationDocument.Open(presentationFile, false))
{
// تمرير العرض التقديمي إلى طريقة CountSlides التالية
// وإرجاع عدد الشرائح.
return CountSlides(presentationDocument);
}
}
// عد الشرائح في العرض التقديمي.
public static int CountSlides(PresentationDocument presentationDocument)
{
// التحقق من كائن الوثيقة الفارغ.
if (presentationDocument == null)
{
throw new ArgumentNullException("presentationDocument");
}
int slidesCount = 0;
// الحصول على جزء العرض التقديمي من الوثيقة.
PresentationPart presentationPart = presentationDocument.PresentationPart;
// الحصول على عدد الشرائح من SlideParts.
if (presentationPart != null)
{
slidesCount = presentationPart.SlideParts.Count();
}
// إرجاع عدد الشرائح إلى الطريقة السابقة.
return slidesCount;
}
public static void GetSlideIdAndText(out string sldText, string docName, int index)
{
using (PresentationDocument ppt = PresentationDocument.Open(docName, false))
{
// الحصول على معرف العلاقة للشريحة الأولى.
PresentationPart part = ppt.PresentationPart;
OpenXmlElementList slideIds = part.Presentation.SlideIdList.ChildElements;
string relId = (slideIds[index] as SlideId).RelationshipId;
// الحصول على جزء الشريحة من معرف العلاقة.
SlidePart slide = (SlidePart)part.GetPartById(relId);
// بناء كائن StringBuilder.
StringBuilder paragraphText = new StringBuilder();
// الحصول على النص الداخلي من الشريحة:
IEnumerable<A.Text> texts = slide.Slide.Descendants<A.Text>();
foreach (A.Text text in texts)
{
paragraphText.Append(text.Text);
}
sldText = paragraphText.ToString();
}
}