Guardar presentaciones en .NET
Visión general
Después de crear una presentación o abrir una existente, utilice el método Presentation.Save para escribir el resultado. Aspose.Slides para .NET puede guardar una presentación en un archivo o flujo en formatos PowerPoint, OpenDocument, PDF y otros. Las siguientes secciones cubren las operaciones de guardado estándar y las opciones disponibles para la salida PPTX.
Guardar presentaciones en archivos
Para guardar una presentación en un archivo, pase la ruta de salida y un valor de SaveFormat al método Presentation.Save. El valor del formato determina el tipo de archivo que Aspose.Slides crea.
El siguiente ejemplo crea una presentación y la guarda como un archivo PPTX:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
// Add or modify presentation content here.
presentation.Save("Output.pptx", SaveFormat.Pptx);
Guardar presentaciones en su formato original
Para ejemplos de detección de archivo y flujo, el comportamiento de presentaciones recién creadas y la distinción entre formatos de origen y salida, consulte Determinar el formato original de la presentación.
En una aplicación de procesamiento por lotes, el formato de entrada puede no ser conocido de antemano. Después de cargar un archivo, lea su formato original desde la propiedad IPresentation.SourceFormat. Pase el valor resultante de SourceFormat a SlideUtil.ToSaveFormat para obtener el valor correspondiente de SaveFormat, y luego use Presentation.Save para escribir la presentación modificada.
El siguiente ejemplo completo procesa cada archivo en un directorio de entrada, actualiza su título y lo guarda en un directorio de salida en el formato desde el que se cargó:
using System;
using System.IO;
using Aspose.Slides;
using Aspose.Slides.Util;
var inputDirectory = "Input";
var outputDirectory = "Output";
Directory.CreateDirectory(outputDirectory);
foreach (var inputPath in Directory.EnumerateFiles(inputDirectory))
{
try
{
using var presentation = new Presentation(inputPath);
var sourceFormat = presentation.SourceFormat;
var saveFormat = SlideUtil.ToSaveFormat(sourceFormat);
presentation.DocumentProperties.Title = "Processed by the batch application";
var outputPath = Path.Combine(outputDirectory, Path.GetFileName(inputPath));
presentation.Save(outputPath, saveFormat);
}
catch (ArgumentException exception)
{
Console.Error.WriteLine($"Cannot map the source format of '{inputPath}': {exception.Message}");
}
catch (Exception exception)
{
Console.Error.WriteLine($"Cannot process '{inputPath}': {exception.Message}");
}
}
SlideUtil.ToSaveFormat asigna PPT, PPTX, ODP, PPTM, PPSX, PPSM, POTX, POTM, PPS, POT, OTP, FODP y PowerPoint XML a sus formatos de guardado de presentación correspondientes. Solo asigna formatos de origen de presentación; no está destinado a seleccionar formatos de exportación como PDF, HTML, TIFF o imágenes. Pasar un valor de SourceFormat no admitido o inválido produce una ArgumentException.
Los archivos heredados PPT, PPS y POT utilizan el mismo contenedor binario. Cuando una presentación de este tipo se carga desde un flujo sin extensión de archivo, un archivo PPS o POT puede identificarse como PPT. Si es necesario conservar estos subtipos heredados, retenga el nombre de archivo original o los metadatos de formato por separado y úselos al elegir el nombre y formato de salida.
Guardar presentaciones en flujos
Para escribir una presentación sin depender de una ruta de archivo final, pase un Stream writable y un valor de SaveFormat al método Presentation.Save. Este enfoque es útil cuando la salida debe devolverse desde un servicio web, almacenarse en una base de datos o procesarse en memoria.
El siguiente ejemplo guarda una presentación nueva en un flujo de archivo:
using System.IO;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
using var outputStream = new FileStream("Output.pptx", FileMode.Create);
presentation.Save(outputStream, SaveFormat.Pptx);
Guardar presentaciones con un tipo de vista predefinido
Puede especificar la vista en la que PowerPoint abre inicialmente una presentación guardada. Establezca la propiedad ViewProperties.LastView a un valor de ViewType antes de guardar.
El siguiente ejemplo configura la vista Maestro de diapositivas como vista inicial:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
presentation.ViewProperties.LastView = ViewType.SlideMasterView;
presentation.Save("SlideMasterView.pptx", SaveFormat.Pptx);
Guardar presentaciones en el formato estricto Office Open XML
Para crear un archivo PPTX que cumpla con el perfil Strict de Office Open XML, cree una instancia de PptxOptions y establezca su propiedad Conformance en Conformance.Iso29500_2008_Strict. Luego pase las opciones al método Presentation.Save.
using Aspose.Slides;
using Aspose.Slides.Export;
var options = new PptxOptions
{
Conformance = Conformance.Iso29500_2008_Strict
};
using var presentation = new Presentation();
presentation.Save("StrictOfficeOpenXml.pptx", SaveFormat.Pptx, options);
Guardar presentaciones en formato Office Open XML en modo Zip64
Un archivo ZIP estándar limita el tamaño comprimido y descomprimido de cada entrada, el tamaño total del archivo y el número de entradas. Dado que un archivo PPTX es un archivo ZIP, una presentación muy grande puede superar esos límites. Las extensiones ZIP64 aumentan los límites de tamaño y de número de entradas aplicables.
Utilice la propiedad PptxOptions.Zip64Mode para controlar si Aspose.Slides escribe extensiones ZIP64:
IfNecessaryutiliza ZIP64 solo cuando la presentación supera los límites ZIP estándar. Este es el modo predeterminado.Neverdesactiva las extensiones ZIP64.Alwayssiempre escribe extensiones ZIP64.
El siguiente ejemplo siempre habilita las extensiones ZIP64 para la presentación de salida:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("Sample.pptx");
var options = new PptxOptions
{
Zip64Mode = Zip64Mode.Always
};
presentation.Save("OutputZip64.pptx", SaveFormat.Pptx, options);
Warning
IfZip64Mode is set to Never and the presentation cannot fit within standard ZIP limits, the save operation throws a PptxException.
Guardar presentaciones en formato Office Open XML con niveles de compresión
Para la salida PPTX, puede equilibrar la velocidad de guardado con el tamaño del archivo estableciendo la propiedad PptxOptions.CompressionLevel. La enumeración CompressionLevel proporciona los siguientes valores:
Nonealmacena los datos sin compresión.Level1ofrece la compresión más rápida y el archivo comprimido más grande.Level2aLevel5favorecen progresivamente un archivo más pequeño sobre la velocidad de guardado.Level6equilibra velocidad de guardado y tamaño del archivo. Este es el nivel predeterminado.Level7yLevel8favorecen aún más un archivo más pequeño sobre la velocidad de guardado.Level9brinda la compresión más fuerte y requiere el mayor tiempo de procesamiento.
El siguiente ejemplo guarda una presentación sin compresión:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("Sample.pptx");
var options = new PptxOptions
{
CompressionLevel = CompressionLevel.None
};
presentation.Save("OutputNoCompression.pptx", SaveFormat.Pptx, options);
El siguiente ejemplo utiliza el nivel máximo de compresión:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("Sample.pptx");
var options = new PptxOptions
{
CompressionLevel = CompressionLevel.Level9
};
presentation.Save("OutputMaximumCompression.pptx", SaveFormat.Pptx, options);
Guardar presentaciones sin actualizar la miniatura
Cuando una presentación se guarda como PPTX, la propiedad PptxOptions.RefreshThumbnail controla su miniatura de documento:
trueregenera la miniatura durante la operación de guardado. Este es el valor predeterminado.falseconserva la miniatura existente. Si la presentación no tiene miniatura, Aspose.Slides no genera una.
El siguiente ejemplo guarda una presentación sin actualizar su miniatura:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("Sample.pptx");
var options = new PptxOptions
{
RefreshThumbnail = false
};
presentation.Save("Output.pptx", SaveFormat.Pptx, options);
Note
Desactivar la actualización de la miniatura puede reducir el tiempo necesario para guardar un archivo PPTX.Guardar actualizaciones de progreso en porcentaje
Para supervisar una operación de guardado, implemente la interfaz IProgressCallback y asigne la implementación a la propiedad ISaveOptions.ProgressCallback. Aspose.Slides entonces llama al método IProgressCallback.Reporting con valores de progreso durante la exportación.
El siguiente ejemplo informa del progreso de una exportación PDF en la consola:
using System;
using Aspose.Slides;
using Aspose.Slides.Export;
var options = new PdfOptions
{
ProgressCallback = new ExportProgressHandler()
};
using var presentation = new Presentation("Sample.pptx");
presentation.Save("Output.pdf", SaveFormat.Pdf, options);
class ExportProgressHandler : IProgressCallback
{
public void Reporting(double progressValue)
{
var progress = Convert.ToInt32(progressValue);
Console.WriteLine($"{progress}% of the file has been converted.");
}
}
Note
Aspose ofrece un PowerPoint Splitter gratuito construido con la API Aspose.Slides. Guarda diapositivas seleccionadas de una presentación como archivos PPT o PPTX independientes.Preguntas frecuentes
¿Aspose.Slides admite guardado incremental o “fast save”?
No. Cada operación de guardado escribe un archivo de salida completo en lugar de actualizar solo las partes modificadas.
¿Pueden varios hilos guardar la misma instancia de Presentation?
No. Una instancia de Presentation no es thread-safe (/slides/es/net/multithreading/). Acceda y guarde cada instancia desde un solo hilo a la vez.
¿Qué ocurre con los hipervínculos y los archivos vinculados externamente cuando guardo una presentación?
Los hipervínculos permanecen en la presentación. Aspose.Slides no copia los archivos vinculados externamente, por lo que la presentación guardada debe seguir pudiendo acceder a sus ubicaciones.
¿Puedo guardar metadatos del documento como autor, título, empresa y fecha de creación?
Sí. Establezca las propiedades del documento apropiadas antes de guardar, y Aspose.Slides las escribe en el archivo de salida.