Извлечение файлов или объектов из файла PowerPoint
Если вы хотите отдельно использовать файлы или объекты из презентации PowerPoint, например видео, фотографии или звуки, их можно извлечь, преобразовав презентацию в папку zip-файла. Обратите внимание, однако, что вы не можете извлекать PDF-файлы или DOTX-файлы.
Следующая процедура работает в Windows, но не в macOS.
Совет: Рекомендуется сначала создать копию презентации, а затем выполнить следующую процедуру для копирования. Это гарантирует сохранение исходной презентации.
Перед выполнением этой процедуры убедитесь, что проводник задано, чтобы отображались имена файлов с расширениями.
Создание расширений файлов в проводник
Действия по настройке проводник (ранее — Windows Обозреватель) для отображения имен файлов с расширениями файлов различаются в зависимости от используемой версии Windows.
Если вы используете Windows 10 или Windows 8:
- В проводник в меню Вид в группе Показать и скрыть выберите проверка расширения имен файлов.
Если вы используете Windows 11:
В проводник на панели инструментов выберите Вид > Показать и убедитесь, что выбран параметр Расширения имен файлов.
Если вы используете Windows 7, Windows Vista или Windows XP:
- В Windows Обозреватель щелкните Параметры папки и поиска. В Windows 7 это значение находится в разделе Упорядочить. В Windows Vista и Windows XP в меню Сервис выберите пункт Параметры папки.
- На вкладке Вид в разделе Файлы и папки снимите флажок проверка скрыть расширения для известных типов файлов.
- Нажмите кнопку ОК.
Открытие презентации в виде папки
Чтобы открыть презентацию в виде папки, используйте Обозреватель, чтобы перейти к папке, содержащей нужную презентацию, а затем выполните следующие действия:

- Выберите нужную презентацию, щелкните ее правой кнопкой мыши и выберите команду Переименовать.
- Измените расширение файла (.pptx) на .zip . Нажмите клавишу ВВОД, чтобы задать имя, а затем в диалоговом окне Переименовать нажмите кнопку Да.
- Дважды щелкните zip-файл, чтобы открыть окно Обозреватель для файлов содержимого. Zip-файл содержит несколько папок, многие из которых содержат такие сведения, как XML-код или свойства. Такие объекты, как видео, звуковые файлы или изображения, находятся в папке ppt во вложенной папке мультимедиа .
- Дважды щелкните вложенную папку мультимедиа , чтобы открыть ее, выберите файл, который нужно извлечь, скопируйте его, а затем перейдите в подходящую папку в другом месте системы и вставьте файл в нее.
Восстановление исходной презентации
Чтобы восстановить исходную презентацию, повторите шаги 1 и 2 в приведенной выше процедуре. На этот раз измените расширение файла с .zip на .pptx .
Powerpoint парсер
Извлечение текста и метаданных из PPT, PPTX, PPS, PPSX, ODP, POT, PPTM, POTX, POTM, PPSM, OTP онлайн
Загружая файлы или используя наш сервис, вы соглашаетесь с нашими Условиями использования. и Политикой конфиденциальности.
Попробуйте другие возможности Парсера
- Экстрактор изображений из PowerPoint
- Просмотр текста из PowerPoint
- Просмотр изображений из PowerPoint
- Считыватель QR кода
- Считыватель штрихкода
Узнайте больше о бесплатном онлайн приложении GroupDocs.Parser!
- Быстрый и удобный экстрактор текста и метаданных для PowerPoint
- Извлеките текст PowerPoint из любого места. Он работает со всех платформ, включая Windows, Mac, Android и iOS
- Извлечение текста из PDF, DOC, DOCX, RTF, HTML, EPUB, XLS, XLSX, PPT, PPTX и многих других форматов файлов и документов (см. список поддерживаемых форматов)
- Быстрый и удобный парсер штрихкодов для документов Штрихкод, DataMatrix, ISBN, MaxiCode, PDF417, Фармакод, QR код, VIN
- Используйте всю мощь GroupDocs.Parser для парсинга данных
Форматы файлов презентаций
Форматы файлов презентаций, в которых хранится набор записей для размещения данных презентации, таких как слайды, фигуры, текст, анимация, видео, аудио и встроенные объекты.
Получить весь текст в слайде в презентации
В этом разделе показано, как использовать классы в пакете SDK Open XML для Office для программного получения всего текста на слайде презентации.
Получение объекта PresentationDocument
Класс PresentationDocument пакета Open XML SDK представляет собой пакет документа презентации. Для работы с документом презентации необходимо сначала создать экземпляр класса PresentationDocument и затем работать с этим экземпляром. Чтобы создать экземпляр класса из документа, вызовите метод PresentationDocument.Open(String, Boolean), который использует путь к файлу и логическое значение в качестве второго параметра, чтобы указать, доступен ли документ для редактирования. Чтобы открыть документ в режиме для чтения и записи, присвойте логическому параметру значение true; для доступа только на чтение присвойте значение false, как показано в приведенной ниже инструкции using. В этом коде параметр file является строкой и содержит путь к файлу, из которого необходимо открыть документ.
// Open the presentation as read-only. using (PresentationDocument presentationDocument = PresentationDocument.Open(presentationFile, false)) < // Insert other code here. >
Using presentationDocument As PresentationDocument = PresentationDocument.Open(file, False) ' Insert other code here. End Using
Инструкцию using рекомендуется использовать вместо традиционной последовательности .Open, .Save, .Close. Это позволяет обеспечить автоматический вызов метода Dispose (внутреннего метода, используемого пакетом SDK Open XML для очистки ресурсов) при достижении закрывающей скобки. Блок после оператора using создает область для объекта, создаваемого или именуемого в операторе using (в этом примере — presentationDocument).
Базовая структура документа презентации
Базовая структура документа PresentationML состоит из нескольких частей, среди которых есть основная, содержащая определение презентации. В следующем тексте спецификации ISO/IEC 29500 представлена общая форма пакета PresentationML .
Main часть пакета PresentationML начинается с корневого элемента презентации. Этот элемент содержит презентацию, которая, в свою очередь, ссылается на список слайдов, список образцов слайдов, список образцов заметок и список образцов раздаточных материалов. Список слайдов ссылается на все слайды в презентации; список образцов слайдов ссылается на все образцы слайдов, используемые в презентации; в списке образцов заметок содержатся данные о форматировании страниц заметок, а в списке образцов раздаточных материалов описан внешний вид раздаточных материалов.
Раздаточные материалы представляют собой набор распечатанных слайдов, которые можно раздать слушателям для последующего использования.
Наряду с текстом и изображениями слайды могут содержать комментарии, заметки и разметку, а также могут входить в одну или несколько пользовательских презентаций. Комментарий представляет собой примечание, которое адресовано сотруднику, ответственному за обслуживание набора слайдов. Заметка представляет собой напоминание или отрывок текста, предназначенный для докладчика или для слушателей.
Другие функции документа PresentationML могут включать следующие: анимацию, звук, видео и переходы между слайдами.
Документ PresentationML не хранится в виде одного большого текста в одной части. Элементы с определенной группировкой функций хранятся в различных частях. Например, все комментарии документа хранятся в части комментариев, а каждый слайд представляет собой отдельную часть.
© ISO/IEC29500: 2008.
Указанный ниже пример кода XML описывает презентацию, содержащую 2 слайда с идентификаторами 267 и 256.
С помощью пакета SDK Open XML можно создавать структуру документа и содержимое с помощью строго типизированных классов, соответствующих элементам PresentationML. Эти классы можно найти в пространстве имен DocumentFormat.OpenXml.Presentation . В следующей таблице представлены имена классов, соответствующих элементам sld, sldLayout, sldMaster и notesMaster.
| Элемент PresentationML | Класс пакета SDK Open XML | Описание |
|---|---|---|
| Sld | Slide | Слайд презентации. Это корневой элемент части SlidePart. |
| sldLayout | SlideLayout | Разметка слайда. Это корневой элемент части SlideLayoutPart. |
| sldMaster | SlideMaster | Образец слайда. Это корневой элемент части SlideMasterPart. |
| notesMaster | NotesMaster | Образец заметок (или handoutMaster). Это корневой элемент части NotesMasterPart. |
Механизм работы примера кода
Пример кода содержит три перегруженных метода GetAllTextInSlide. В приведенном ниже сегменте первый перегруженный метод открывает исходную презентацию со слайдом, из которого необходимо извлечь текст, и передает презентацию второму перегруженному методу, который извлекает часть слайда. Этот метод возвращает массив строк, который второй метод возвращает ему; каждая строка представляет собой абзац текста в указанном слайде.
// Get all the text in a slide. public static string[] GetAllTextInSlide(string presentationFile, int slideIndex) < // Open the presentation as read-only. using (PresentationDocument presentationDocument = PresentationDocument.Open(presentationFile, false)) < // Pass the presentation and the slide index // to the next GetAllTextInSlide method, and // then return the array of strings it returns. return GetAllTextInSlide(presentationDocument, slideIndex); >>
' Get all the text in a slide. Public Shared Function GetAllTextInSlide(ByVal presentationFile As String, ByVal slideIndex As Integer) As String() ' Open the presentation as read-only. Using presentationDocument As PresentationDocument = PresentationDocument.Open(presentationFile, False) ' Pass the presentation and the slide index ' to the next GetAllTextInSlide method, and ' then return the array of strings it returns. Return GetAllTextInSlide(presentationDocument, slideIndex) End Using End Function
Второй перегруженный метод принимает переданный документ презентации и получает часть слайда для передачи третьему перегруженному методу. Он возвращает первому перегруженному методу массив строк, возвращенный третьим методом; каждая строка представляет собой абзац текста в указанном слайде.
public static string[] GetAllTextInSlide(PresentationDocument presentationDocument, int slideIndex) < // Verify that the presentation document exists. if (presentationDocument == null) < throw new ArgumentNullException("presentationDocument"); >// Verify that the slide index is not out of range. if (slideIndex < 0) < throw new ArgumentOutOfRangeException("slideIndex"); >// Get the presentation part of the presentation document. PresentationPart presentationPart = presentationDocument.PresentationPart; // Verify that the presentation part and presentation exist. if (presentationPart != null && presentationPart.Presentation != null) < // Get the Presentation object from the presentation part. Presentation presentation = presentationPart.Presentation; // Verify that the slide ID list exists. if (presentation.SlideIdList != null) < // Get the collection of slide IDs from the slide ID list. var slideIds = presentation.SlideIdList.ChildElements; // If the slide ID is in range. if (slideIndex < slideIds.Count) < // Get the relationship ID of the slide. string slidePartRelationshipId = (slideIds[slideIndex] as SlideId).RelationshipId; // Get the specified slide part from the relationship ID. SlidePart slidePart = (SlidePart)presentationPart.GetPartById(slidePartRelationshipId); // Pass the slide part to the next method, and // then return the array of strings that method // returns to the previous method. return GetAllTextInSlide(slidePart); >> > // Else, return null. return null; >
Public Shared Function GetAllTextInSlide(ByVal presentationDocument As PresentationDocument, ByVal slideIndex As Integer) As String() ' Verify that the presentation document exists. If presentationDocument Is Nothing Then Throw New ArgumentNullException("presentationDocument") End If ' Verify that the slide index is not out of range. If slideIndex < 0 Then Throw New ArgumentOutOfRangeException("slideIndex") End If ' Get the presentation part of the presentation document. Dim presentationPart As PresentationPart = presentationDocument.PresentationPart ' Verify that the presentation part and presentation exist. If presentationPart IsNot Nothing AndAlso presentationPart.Presentation IsNot Nothing Then ' Get the Presentation object from the presentation part. Dim presentation As Presentation = presentationPart.Presentation ' Verify that the slide ID list exists. If presentation.SlideIdList IsNot Nothing Then ' Get the collection of slide IDs from the slide ID list. Dim slideIds = presentation.SlideIdList.ChildElements ' If the slide ID is in range. If slideIndex < slideIds.Count Then ' Get the relationship ID of the slide. Dim slidePartRelationshipId As String = (TryCast(slideIds(slideIndex), SlideId)).RelationshipId ' Get the specified slide part from the relationship ID. Dim slidePart As SlidePart = CType(presentationPart.GetPartById(slidePartRelationshipId), SlidePart) ' Pass the slide part to the next method, and ' then return the array of strings that method ' returns to the previous method. Return GetAllTextInSlide(slidePart) End If End If End If ' Else, return null. Return Nothing End Function
В приведенном ниже сегменте кода показан третий перегруженный метод, который принимает часть слайда и возвращает второму перегруженному методу массив строк, каждая из которых представляет абзац текста. Сначала в методе выполняется проверка того, что переданный слайд существует, после чего создается связанный список строк. Далее в цикле выполняется обход абзацев текста переданного слайда, а с помощью объекта StringBuilder, предназначенного для объединения всех строк текста в абзаце, каждый абзац присваивается строке в связанном списке. Затем второму перегруженному методу возвращается массив строк, представляющий весь текст указанного слайда презентации.
public static string[] GetAllTextInSlide(SlidePart slidePart) < // Verify that the slide part exists. if (slidePart == null) < throw new ArgumentNullException("slidePart"); >// Create a new linked list of strings. LinkedList texts = new LinkedList(); // If the slide exists. if (slidePart.Slide != null) < // Iterate through all the paragraphs in the slide. foreach (var paragraph in slidePart.Slide.Descendants()) < // Create a new string builder. StringBuilder paragraphText = new StringBuilder(); // Iterate through the lines of the paragraph. foreach (var text in paragraph.Descendants()) < // Append each line to the previous lines. paragraphText.Append(text.Text); >if (paragraphText.Length > 0) < // Add each paragraph to the linked list. texts.AddLast(paragraphText.ToString()); >> > if (texts.Count > 0) < // Return an array of strings. return texts.ToArray(); >else < return null; >>
Public Shared Function GetAllTextInSlide(ByVal slidePart As SlidePart) As String() ' Verify that the slide part exists. If slidePart Is Nothing Then Throw New ArgumentNullException("slidePart") End If ' Create a new linked list of strings. Dim texts As New LinkedList(Of String)() ' If the slide exists. If slidePart.Slide IsNot Nothing Then ' Iterate through all the paragraphs in the slide. For Each paragraph In slidePart.Slide.Descendants(Of DocumentFormat.OpenXml.Drawing.Paragraph)() ' Create a new string builder. Dim paragraphText As New StringBuilder() ' Iterate through the lines of the paragraph. For Each text In paragraph.Descendants(Of DocumentFormat.OpenXml.Drawing.Text)() ' Append each line to the previous lines. paragraphText.Append(text.Text) Next text If paragraphText.Length > 0 Then ' Add each paragraph to the linked list. texts.AddLast(paragraphText.ToString()) End If Next paragraph End If If texts.Count > 0 Then ' Return an array of strings. Return texts.ToArray() Else Return Nothing End If End Function
Пример кода
Ниже приведен полный пример кода для получения всего текста конкретного слайда в файле презентации. Например, можно использовать следующий цикл foreach в программе , чтобы получить массив строк, возвращенный методом GetAllTextInSlide, который представляет текст на втором слайде файла презентации "Myppt8.pptx".
foreach (string s in GetAllTextInSlide(@"C:\Users\Public\Documents\Myppt8.pptx", 1)) Console.WriteLine(s);
For Each s As String In GetAllTextInSlide("C:\Users\Public\Documents\Myppt8.pptx", 1) Console.WriteLine(s) Next
Ниже приведен полный пример кода на языках C# и Visual Basic.
using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Presentation; using System; using System.Collections.Generic; using System.Linq; using System.Text; GetAllTextInSlide(args[0], int.Parse(args[1])); // Get all the text in a slide. static string[]? GetAllTextInSlide(string presentationFile, int slideIndex) < // Open the presentation as read-only. using (PresentationDocument presentationDocument = PresentationDocument.Open(presentationFile, false)) < // Pass the presentation and the slide index // to the next GetAllTextInSlide method, and // then return the array of strings it returns. return GetAllTextInSlideFromPresentation(presentationDocument, slideIndex); >> static string[]? GetAllTextInSlideFromPresentation(PresentationDocument presentationDocument, int slideIndex) < // Verify that the slide index is not out of range. if (slideIndex < 0) < throw new ArgumentOutOfRangeException("slideIndex"); >// Get the presentation part of the presentation document. PresentationPart? presentationPart = presentationDocument.PresentationPart; // Verify that the presentation part and presentation exist. if (presentationPart is not null && presentationPart.Presentation is not null) < // Get the Presentation object from the presentation part. Presentation presentation = presentationPart.Presentation; // Verify that the slide ID list exists. if (presentation.SlideIdList is not null) < // Get the collection of slide IDs from the slide ID list. DocumentFormat.OpenXml.OpenXmlElementList slideIds = presentation.SlideIdList.ChildElements; // If the slide ID is in range. if (slideIndex < slideIds.Count) < // Get the relationship ID of the slide. string? slidePartRelationshipId = ((SlideId)slideIds[slideIndex]).RelationshipId; if (slidePartRelationshipId is null) < return null; >// Get the specified slide part from the relationship ID. SlidePart slidePart = (SlidePart)presentationPart.GetPartById(slidePartRelationshipId); // Pass the slide part to the next method, and // then return the array of strings that method // returns to the previous method. return GetAllTextInSlideFromPart(slidePart); > > > // Else, return null. return null; > static string[] GetAllTextInSlideFromPart(SlidePart slidePart) < // Verify that the slide part exists. if (slidePart is null) < throw new ArgumentNullException("slidePart"); >// Create a new linked list of strings. LinkedList texts = new LinkedList(); // If the slide exists. if (slidePart.Slide is not null) < // Iterate through all the paragraphs in the slide. foreach (DocumentFormat.OpenXml.Drawing.Paragraph paragraph in slidePart.Slide.Descendants()) < // Create a new string builder. StringBuilder paragraphText = new StringBuilder(); // Iterate through the lines of the paragraph. foreach (DocumentFormat.OpenXml.Drawing.Text text in paragraph.Descendants()) < // Append each line to the previous lines. paragraphText.Append(text.Text); >if (paragraphText.Length > 0) < // Add each paragraph to the linked list. texts.AddLast(paragraphText.ToString()); >> > // Return an array of strings. return texts.ToArray(); >
Imports System.Text Imports DocumentFormat.OpenXml.Packaging Imports DocumentFormat.OpenXml.Presentation Module MyModule Sub Main(args As String()) End Sub ' Get all the text in a slide. Public Function GetAllTextInSlide(ByVal presentationFile As String, ByVal slideIndex As Integer) As String() ' Open the presentation as read-only. Using presentationDocument As PresentationDocument = presentationDocument.Open(presentationFile, False) ' Pass the presentation and the slide index ' to the next GetAllTextInSlide method, and ' then return the array of strings it returns. Return GetAllTextInSlide(presentationDocument, slideIndex) End Using End Function Public Function GetAllTextInSlide(ByVal presentationDocument As PresentationDocument, ByVal slideIndex As Integer) As String() ' Verify that the presentation document exists. If presentationDocument Is Nothing Then Throw New ArgumentNullException("presentationDocument") End If ' Verify that the slide index is not out of range. If slideIndex < 0 Then Throw New ArgumentOutOfRangeException("slideIndex") End If ' Get the presentation part of the presentation document. Dim presentationPart As PresentationPart = presentationDocument.PresentationPart ' Verify that the presentation part and presentation exist. If presentationPart IsNot Nothing AndAlso presentationPart.Presentation IsNot Nothing Then ' Get the Presentation object from the presentation part. Dim presentation As Presentation = presentationPart.Presentation ' Verify that the slide ID list exists. If presentation.SlideIdList IsNot Nothing Then ' Get the collection of slide IDs from the slide ID list. Dim slideIds = presentation.SlideIdList.ChildElements ' If the slide ID is in range. If slideIndex < slideIds.Count Then ' Get the relationship ID of the slide. Dim slidePartRelationshipId As String = (TryCast(slideIds(slideIndex), SlideId)).RelationshipId ' Get the specified slide part from the relationship ID. Dim slidePart As SlidePart = CType(presentationPart.GetPartById(slidePartRelationshipId), SlidePart) ' Pass the slide part to the next method, and ' then return the array of strings that method ' returns to the previous method. Return GetAllTextInSlide(slidePart) End If End If End If ' Else, return null. Return Nothing End Function Public Function GetAllTextInSlide(ByVal slidePart As SlidePart) As String() ' Verify that the slide part exists. If slidePart Is Nothing Then Throw New ArgumentNullException("slidePart") End If ' Create a new linked list of strings. Dim texts As New LinkedList(Of String)() ' If the slide exists. If slidePart.Slide IsNot Nothing Then ' Iterate through all the paragraphs in the slide. For Each paragraph In slidePart.Slide.Descendants(Of DocumentFormat.OpenXml.Drawing.Paragraph)() ' Create a new string builder. Dim paragraphText As New StringBuilder() ' Iterate through the lines of the paragraph. For Each Text In paragraph.Descendants(Of DocumentFormat.OpenXml.Drawing.Text)() ' Append each line to the previous lines. paragraphText.Append(Text.Text) Next Text If paragraphText.Length >0 Then ' Add each paragraph to the linked list. texts.AddLast(paragraphText.ToString()) End If Next paragraph End If If texts.Count > 0 Then ' Return an array of strings. Return texts.ToArray() Else Return Nothing End If End Function End Module
См. также
Конвертер PPT в DOC (WORD)
Сконвертируйте ваши ppt-файлы в doc онлайн и бесплатно
Выберите файлы
Выберите файлы
Перетащите файлы сюда. 100 MB максимальный размер файла или Регистрация
- Image
- Document
- Ebook
- Audio
- Archive
- Video
- Presentation
- Font
- Vector
- CAD
- Image
- Document
- Ebook
- Audio
- Archive
- Video
- Presentation
- Font
- Vector
- CAD
Microsoft PowerPoint 97/2000/XP
Файл для хранения созданных презентаций и слайд шоу Microsoft PowerPoint с возможностью редактирования. Впервые был введен для хранения данных в редакторе PowerPoint 97. Хранит набор отдельных слайдов с текстовой, графической, видео и аудио информацией. Файл содержит информацию о примененных визуальных эффектах внутри слайдов.
больше информации
Документ Microsoft Word
DOC ― это расширение файлов для документов текстового редактора. Оно связано преимущественно с приложением Microsoft Word. Файлы DOC также могут содержать графики, таблицы, видео, изображения, звуки и диаграммы. Этот формат поддерживается почти всеми операционными системами.