Операции презентаций с низким кодом в .NET
Обзор
Пространство имён Aspose.Slides.LowCode предоставляет статические вспомогательные классы для обычных операций с презентациями. Эти помощники оборачивают часто используемые рабочие процессы объектной модели в целевые методы, позволяя конвертировать или объединять файлы, обрабатывать элементы презентации, собирать фигуры и удалять неиспользуемый контент с меньшим количеством кода.
Вспомогательные средства low‑code наиболее полезны, когда операция применяется ко всему файлу или презентации и стандартный рабочий процесс соответствует вашим требованиям. Используйте полную Aspose.Slides object model, когда требуется тонкое управление отдельными слайдами, мастерами, макетами, фигурами, параметрами экспорта или связями между элементами презентации.
Следующая таблица суммирует доступные помощники:
| Помощник | Для чего используется |
|---|---|
| Convert | Конвертирование презентации в другой формат прямым вызовом «файл‑в‑файл». |
| Merger | Объединение полных файлов презентаций одинакового формата. |
| ForEach | Выполнение действия для каждого слайда, фигуры, абзаца или части текста. |
| Collect | Получение фигур из всей презентации для повторной обработки или анализа. |
| Compress | Удаление неиспользуемых мастеров/макетов, уменьшение данных встроенных шрифтов и сжатие изображений. |
Конвертировать презентацию
Используйте Convert.AutoByExtension, когда расширение выходного файла достаточно для выбора формата экспорта. Метод открывает исходную презентацию, определяет требуемый формат по пути выходного файла и записывает результат.
using Aspose.Slides.LowCode;
Convert.AutoByExtension("input.pptx", "output.pdf");
Класс Convert также предоставляет выделенные методы для вывода в PDF, SVG, JPEG, PNG и TIFF. Используйте полную объектную модель, когда необходимо проверить или изменить презентацию перед экспортом или настроить параметр экспорта, который не раскрыт выбранным помощником. См. Convert Presentation для рабочих процессов и параметров, специфичных для форматов.
Объединить презентации
Используйте Merger.Process для объединения полных файлов презентаций одной командой. Входные презентации должны иметь одинаковый формат файла.
using Aspose.Slides.LowCode;
var inputFiles = new[] { "part-1.pptx", "part-2.pptx" };
Merger.Process(inputFiles, "merged.pptx");
Этот помощник уместен, когда все слайды должны быть добавлены к одному результату без индивидуального выбора или переназначения. Используйте полную объектную модель, когда нужно объединить выбранные слайды, применить целевой мастер или макет, явно сохранить разделы или согласовать разные размеры слайдов. См. Merge Presentations для этих сценариев.
Итерация по элементам презентации
Класс ForEach вызывает обратный вызов для каждого запрошенного типа элемента презентации. Он избавляет от вложенных циклов перебора и удобен для инспекции или изменения форматирования по всей презентации.
Следующий пример использует ForEach.Slide, ForEach.Shape, ForEach.Paragraph, и ForEach.Portion для инспекции соответствующих элементов:
using System;
using Aspose.Slides;
using Aspose.Slides.LowCode;
using var presentation = new Presentation("input.pptx");
ForEach.Slide(presentation, (slide, index) =>
{
Console.WriteLine($"Slide {index}: {slide.Shapes.Count} shapes");
});
ForEach.Shape(presentation, (shape, slide, index) =>
{
Console.WriteLine($"Shape {index} on {slide.GetType().Name}: {shape.Name}");
});
ForEach.Paragraph(presentation, (paragraph, slide, index) =>
{
Console.WriteLine($"Paragraph {index} on {slide.GetType().Name}: {paragraph.Text}");
});
ForEach.Portion(presentation, (portion, paragraph, slide, index) =>
{
Console.WriteLine($"Portion {index} on {slide.GetType().Name}: {portion.Text}");
});
По умолчанию обход фигур и текста по всей презентации включает обычные, мастер‑ и макетные слайды. Перегруженные варианты с параметром includeNotes могут также обрабатывать слайды заметок. Используйте прямые циклы перебора, когда важен порядок обхода, ранний выход, фильтрация до вызова обратного вызова или детальный контроль родитель‑дочерних отношений.
Собрать фигуры
Используйте Collect.Shapes, когда вам нужна коллекция всех фигур в презентации, а не обратный вызов для каждой фигурой. Это удобно, если один и тот же набор будет фильтроваться, подсчитываться или обрабатываться более одного раза.
using System;
using Aspose.Slides;
using Aspose.Slides.LowCode;
using var presentation = new Presentation("input.pptx");
var shapes = Collect.Shapes(presentation);
foreach (var shape in shapes)
{
Console.WriteLine($"{shape.Name}: {shape.GetType().Name}");
}
Используйте ForEach.Shape вместо этого, когда каждую фигуру можно обрабатывать сразу и нет необходимости сохранять собранный результат.
Сжать содержимое презентации
Класс Compress может удалять неиспользуемые структурные элементы и уменьшать данные встроенных шрифтов:
- Compress.RemoveUnusedLayoutSlides удаляет макетные слайды, на которые не ссылаются обычные слайды.
- Compress.RemoveUnusedMasterSlides удаляет мастер‑слайды, которые больше не используются.
- Compress.CompressEmbeddedFonts удаляет неиспользуемые символы из встроенных шрифтов.
using Aspose.Slides;
using Aspose.Slides.Export;
using Aspose.Slides.LowCode;
using var presentation = new Presentation("input.pptx");
Compress.RemoveUnusedLayoutSlides(presentation);
Compress.RemoveUnusedMasterSlides(presentation);
Compress.CompressEmbeddedFonts(presentation);
presentation.Save("compressed.pptx", SaveFormat.Pptx);
Сначала удаляйте неиспользуемые макеты, а затем неиспользуемые мастера, чтобы мастер, ставший неотreferenced после очистки макетов, также мог быть удалён. Сохраните оптимизированную презентацию в новый файл, если позже могут понадобиться оригинальные мастера, макеты или полные данные встроенных шрифтов. Подробнее см. Slide Master и Embedded Font.
Сжать всю презентацию
Aspose.Slides for .NET 26.11 добавляет Compress.CompressPresentation. Он объединяет удаление неиспользуемых макетных/мастер‑слайдов, подмножество используемых символов в встроенных шрифтах и сжатие изображений до 150 DPI. Используйте отдельные операции выше, когда нужно контролировать, какие изменения применяются.
Установите Aspose.Slides for .NET 26.11 или новее и укажите input.pptx. Сохраните в отдельный файл: удалённые макеты, символы шрифтов и обрезанные пиксели изображений могут потребоваться для последующего редактирования.
using Aspose.Slides;
using Aspose.Slides.Export;
using Aspose.Slides.LowCode;
using var presentation = new Presentation("input.pptx");
Compress.CompressPresentation(presentation);
presentation.Save("compressed.pptx", SaveFormat.Pptx);
Сжать изображения с выбранным разрешением
Используйте Compress.CompressImages для обработки подходящих изображений без удаления макетов или подмножества шрифтов. В этом примере используется 96 DPI; выберите другое значение PicturesCompression для ваших потребностей вывода.
using Aspose.Slides;
using Aspose.Slides.Export;
using Aspose.Slides.LowCode;
using var presentation = new Presentation("input.pptx");
Compress.CompressImages(presentation, PicturesCompression.Dpi96);
presentation.Save("compressed-images.pptx", SaveFormat.Pptx);
Оба помощника используют следующий диапазон обработки изображений:
| Содержание | Обработка |
|---|---|
| Растровые изображения и заливка фигур изображениями на обычных, мастер‑ и макетных слайдах, включая сгруппированные фигуры | Подлежат сжатию. |
| Изображения, уже имеющие требуемое разрешение или ниже | Не увеличиваются. Обрезанные области всё равно могут быть удалены. |
| Обрезанные области изображений | Скрытые пиксели удаляются навсегда, а смещения обрезки сбрасываются. |
| Фоны слайдов и заливки ячеек таблиц | Не обрабатываются этими помощниками. |
| Внутреннее содержание диаграмм/SmartArt, GIF и векторные форматы, такие как SVG, EMF и WMF | Вне задокументированного диапазона сжатия изображений. |
В версии 26.11 PicturesCompression.DocumentResolution предотвращает уменьшение разрешения необрезанных изображений, но не сохраняет обрезанные пиксели. Обрезанное изображение всё равно может быть записано с удалёнными скрытыми областями. Ни один из помощников не предоставляет параметр сохранения обрезки. Для индивидуального контроля см. пример сжатия по отдельному изображению.
Сравните внешний вид и размер файла результата перед заменой оригинала. Экономия зависит от исходных изображений, их отображаемого размера и неиспользуемого контента; сжатие не гарантирует уменьшения файла. См. Embedded Fonts для последствий подмножества шрифтов.
FAQ
Когда следует использовать low‑code API вместо полной объектной модели?
Используйте low‑code помощники, когда стандартная операция применяется к полному файлу или презентации и не требует детального контроля над отдельными элементами. Используйте полную объектную модель, когда нужно выбирать конкретные слайды, управлять связями мастеров и макетов, инспектировать промежуточное состояние или настраивать поведение, не раскрытое помощником.
Может ли Merger объединять презентации разных форматов файлов?
Нет. Merger.Process требует, чтобы входные презентации имели один и тот же формат. Сначала преобразуйте входные файлы в общий формат, например с помощью Convert.AutoByExtension, затем объедините полученные файлы.
Обрабатывает ли ForEach мастер‑, макет‑ и слайды заметок?
ForEach.Slide перебирает обычные слайды презентации. По всей презентации ForEach.Shape, ForEach.Paragraph и ForEach.Portion включают обычные, мастер‑ и макетные слайды по умолчанию. Используйте их перегрузки с includeNotes = true, чтобы включить слайды заметок.
В чём разница между ForEach.Shape и Collect.Shapes?
Используйте ForEach.Shape для немедленной обработки каждой фигуры через обратный вызов. Используйте Collect.Shapes когда нужен перечислимый результат, который можно сохранять, фильтровать, подсчитывать или обходить многократно.
Всегда ли Compress делает файл презентации меньше?
Не обязательно. Экономия зависит от неиспользуемых макетов/мастер‑слайдов, встроенных шрифтов с неиспользуемыми символами и изображений, которые выгодно сжать. Помощники Compress могут оставить размер без изменений или даже увеличить его для некоторых входных данных. Сравнивайте оба показателя — размер и качество отображения — и сохраняйте оригинал.
Сохраняются ли изменения, сделанные ForEach или Compress, автоматически?
Нет. Эти помощники работают с загруженным объектом Presentation в памяти. После изменения элементов в обратном вызове ForEach или выполнения Compress вызовите Presentation.Save, чтобы записать результат.