Guardar presentaciones en JavaScript
Visión general
Después de crear una presentación o abrir una existente, use el método Presentation.save para escribir el resultado. Aspose.Slides para Node.js mediante Java puede guardar una presentación en un archivo o flujo en formatos PowerPoint, OpenDocument, PDF y otros. Las siguientes secciones describen las operaciones estándar de guardado 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 de formato determina el tipo de archivo que Aspose.Slides crea.
El siguiente ejemplo crea una presentación y la guarda como archivo PPTX:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation();
try {
// Añade o modifica el contenido de la presentación aquí.
presentation.save("output.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Guardar presentaciones en su formato original
Para ejemplos de detección de archivos y flujos, el comportamiento de presentaciones recién creadas y la distinción entre formatos de origen y de salida, consulte Determine the Original Presentation Format.
En una aplicación de procesamiento por lotes, el formato de entrada puede no conocerse de antemano. Después de cargar un archivo, lea su formato original mediante el método Presentation.getSourceFormat. Pase el valor resultante de SourceFormat a SlideUtil.toSaveFormat para obtener el valor correspondiente de SaveFormat, y luego utilice 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ó:
const aspose = { slides: require("aspose.slides.via.java") };
const fs = require("fs");
const path = require("path");
const inputDirectory = "Input";
const outputDirectory = "Output";
if (!fs.existsSync(inputDirectory)) {
console.error("The input directory does not exist.");
} else {
fs.mkdirSync(outputDirectory, { recursive: true });
const inputFiles = fs.readdirSync(inputDirectory, { withFileTypes: true })
.filter((entry) => entry.isFile());
for (const inputFile of inputFiles) {
const inputPath = path.join(inputDirectory, inputFile.name);
try {
const presentation = new aspose.slides.Presentation(inputPath);
try {
const saveFormat = aspose.slides.SlideUtil.toSaveFormat(presentation.getSourceFormat());
presentation.getDocumentProperties().setTitle("Processed by the batch application");
const outputPath = path.join(outputDirectory, inputFile.name);
presentation.save(outputPath, saveFormat);
} finally {
presentation.dispose();
}
} catch (error) {
console.error(`Cannot process '${inputPath}': ${error.message}`);
}
}
}
SlideUtil.toSaveFormat asigna PPT, PPTX, ODP, PPTM, PPSX, PPSM, POTX, POTM, PPS, POT, OTP, FODP y PowerPoint XML a sus correspondientes formatos de guardado de presentación. 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 compatible o inválido genera un error.
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, conserve el nombre de archivo original o los metadatos de formato por separado y utilícelos al elegir el nombre y formato del archivo de salida.
Guardar presentaciones en flujos
Para escribir una presentación sin depender de una ruta de archivo definitiva, pase un flujo de escritura 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 nueva presentación en un flujo de archivo:
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const presentation = new aspose.slides.Presentation();
try {
const outputStream = java.newInstanceSync("java.io.FileOutputStream", "output.pptx");
try {
presentation.save(outputStream, aspose.slides.SaveFormat.Pptx);
} finally {
outputStream.close();
}
} finally {
presentation.dispose();
}
Guardar presentaciones con un tipo de vista predefinido
Puede especificar la vista en la que PowerPoint abre inicialmente una presentación guardada. Use el método ViewProperties.setLastView con un valor de ViewType antes de guardar.
El siguiente ejemplo configura la vista Maestro de diapositivas como vista inicial:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation();
try {
presentation.getViewProperties().setLastView(aspose.slides.ViewType.SlideMasterView);
presentation.save("slide-master-view.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Guardar presentaciones en el formato Strict Office Open XML
Para crear un archivo PPTX que cumpla con el perfil Strict de Office Open XML, cree una instancia de PptxOptions y utilice su método setConformance con Conformance.Iso29500_2008_Strict. Luego pase las opciones al método Presentation.save.
const aspose = { slides: require("aspose.slides.via.java") };
const options = new aspose.slides.PptxOptions();
options.setConformance(aspose.slides.Conformance.Iso29500_2008_Strict);
const presentation = new aspose.slides.Presentation();
try {
presentation.save("strict-office-open-xml.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
presentation.dispose();
}
Guardar presentaciones en 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. Como un archivo PPTX es un archivo ZIP, una presentación muy grande puede superar esos límites. Las extensiones ZIP64 elevan los límites de tamaño y de número de entradas aplicables.
Use el método PptxOptions.setZip64Mode para controlar si Aspose.Slides escribe extensiones ZIP64:
- IfNecessary usa ZIP64 solo cuando la presentación supera los límites estándar de ZIP. Este es el modo predeterminado.
- Never desactiva las extensiones ZIP64.
- Always siempre escribe extensiones ZIP64.
El siguiente ejemplo siempre habilita las extensiones ZIP64 para la presentación de salida:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("input.pptx");
try {
const options = new aspose.slides.PptxOptions();
options.setZip64Mode(aspose.slides.Zip64Mode.Always);
presentation.save("output-zip64.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
presentation.dispose();
}
Warning
Si se usa Zip64Mode.Never y la presentación no cabe dentro de los límites estándar de ZIP, la operación de guardado lanza una PptxException.Guardar presentaciones en Office Open XML con niveles de compresión
Para la salida PPTX, puede equilibrar la velocidad de guardado frente al tamaño del archivo usando el método PptxOptions.setCompressionLevel. La clase CompressionLevel proporciona los siguientes valores:
- None almacena los datos sin compresión.
- Level1 ofrece la compresión más rápida y la salida comprimida más grande.
- Level2 a Level5 favorecen progresivamente una salida más pequeña sobre la velocidad de guardado.
- Level6 equilibra la velocidad de guardado y el tamaño del archivo. Este es el nivel predeterminado.
- Level7 y Level8 favorecen aún más una salida más pequeña sobre la velocidad de guardado.
- Level9 proporciona la compresión más fuerte y requiere más tiempo de procesamiento.
El siguiente ejemplo guarda una presentación sin compresión:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("input.pptx");
try {
const options = new aspose.slides.PptxOptions();
options.setCompressionLevel(aspose.slides.CompressionLevel.None);
presentation.save("output-no-compression.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
presentation.dispose();
}
El siguiente ejemplo usa el nivel máximo de compresión:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("input.pptx");
try {
const options = new aspose.slides.PptxOptions();
options.setCompressionLevel(aspose.slides.CompressionLevel.Level9);
presentation.save("output-maximum-compression.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
presentation.dispose();
}
Guardar presentaciones sin actualizar la miniatura
Cuando una presentación se guarda como PPTX, el método PptxOptions.setRefreshThumbnail controla su miniatura del 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:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("input.pptx");
try {
const options = new aspose.slides.PptxOptions();
options.setRefreshThumbnail(false);
presentation.save("output.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
presentation.dispose();
}
Note
Desactivar la actualización de la miniatura puede reducir el tiempo necesario para guardar un archivo PPTX.Actualizaciones de progreso de guardado en porcentaje
Para supervisar una operación de guardado, implemente la interfaz IProgressCallback con un proxy Java y pase la implementación al método SaveOptions.setProgressCallback. Aspose.Slides llamará entonces al método IProgressCallback.reporting con valores de progreso durante la exportación.
El siguiente ejemplo informa del progreso de una exportación a PDF en la consola:
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const exportProgressHandler = java.newProxy("com.aspose.slides.IProgressCallback", {
reporting: function(progressValue) {
const progress = Math.floor(progressValue);
console.log(`${progress}% of the file has been converted.`);
}
});
const options = new aspose.slides.PdfOptions();
options.setProgressCallback(exportProgressHandler);
const presentation = new aspose.slides.Presentation("input.pptx");
try {
presentation.save("output.pdf", aspose.slides.SaveFormat.Pdf, options);
} finally {
presentation.dispose();
}
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. Acceda y guarde cada instancia desde un solo hilo a la vez.
¿Qué ocurre con los hipervínculos y los archivos vinculados externamente al guardar 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 adecuadas antes de guardar, y Aspose.Slides las escribe en el archivo de salida.