Flujos de salida – Output Streams – Java MemoryStream
Flujos de salida – Output Streams
Al realizar operaciones de conversión de HTML, los resultados normalmente se guardan en un archivo. Sin embargo, ciertos escenarios requieren almacenar los resultados en la memoria o enviarlos a un almacenamiento remoto. Puedes hacer esto fácilmente implementando la clase especializada MemoryStreamProvider. Esta clase representa un mecanismo de devolución de llamada necesario para manejar la creación y administración de flujos de salida, por ejemplo, durante el renderizado.
Nota: Puede invocarse varias veces cuando se requieren múltiples flujos de salida. El escenario en el que este caso es posible es renderizar HTML en el conjunto de archivos de imagen.
Clase MemoryStreamProvider
La biblioteca Aspose.HTML for Java permite realizar la clase MemoryStreamProvider como una implementación personalizada de la interfaz java.io.Closeable. Permitirá llamar al método close() en instancias de esta clase para liberar cualquier recurso retenido por el objeto MemoryStreamProvider. La clase MemoryStreamProvider tiene un campo público lStream que es una lista java.util.List de objetos java.io.InputStream. Estos objetos representan los flujos de entrada creados durante el proceso de representación del documento.
1// Implement a memory-based stream provider for handling InputStreams during document rendering in Aspose.HTML for Java
2
3// For complete examples and data files, please go to https://github.com/aspose-html/Aspose.HTML-for-Java
4
5public class MemoryStreamProvider implements java.io.Closeable {
6 // List of InputStream objects created during the document rendering
7 public java.util.List<java.io.InputStream> lStream = new java.util.ArrayList<>();
8
9 @Override
10 public void close() throws java.io.IOException {
11 for (java.io.InputStream stream : lStream) {
12 stream.close();
13 }
14 }
15}MemoryStream to File
El siguiente código Java demuestra cómo utilizar la clase MemoryStreamProvider y la biblioteca Aspose.HTML for Java para convertir HTML a JPG y guardar la imagen en un archivo.
- Cree una nueva instancia de la clase
MemoryStreamProvider. Se utilizará como flujo de salida para el proceso de renderizado. - Inicialice un documento HTML utilizando la clase HTMLDocument. El contenido HTML se pasa como parámetro al constructor HTMLDocument().
- Llame al método
convertHTML(document, opciones, proveedor)para convertir el objeto HTMLDocument en una imagen usando las opciones de guardar yMemoryStreamProvider. - Utilice el método
streamProvider.lStream.get(0)para recuperar el primer objeto InputStream de la listalStreamdel objetostreamProvidery asígnelo a la variablememorypara su posterior manipulación. De esta manera, accede al flujo de memoria que contiene los datos del resultado. - Utilice el método
reset()para restablecer la posición de la transmisión al principio.
1// Convert HTML to JPEG in memory using Aspose.HTML for Java and save the result to a file
2
3// Create an instance of MemoryStreamProvider
4MemoryOutputStreamProvider streamProvider = new MemoryOutputStreamProvider();
5
6// Initialize an HTMLDocument instance
7HTMLDocument document = new HTMLDocument("<span>Hello, World!!</span>", ".");
8
9// Convert HTML to JPG using the MemoryStreamProvider
10Converter.convertHTML(document, new ImageSaveOptions(ImageFormat.Jpeg), streamProvider.lStream);
11
12// Get access to the memory stream that contains the result data
13java.io.InputStream memory = streamProvider.lStream.get(0);
14memory.reset();
15
16// Flush the result data to the output file
17Path outputFile = new File("output.jpg").toPath();
18Files.copy(memory, outputFile, StandardCopyOption.REPLACE_EXISTING);Conclusión
La clase MemoryStreamProvider es un componente versátil e importante cuando se manejan operaciones de renderizado en memoria con Aspose.HTML for Java. Al implementar la interfaz java.io.Closeable, MemoryStreamProvider proporciona una gestión eficiente de recursos al permitir que las transmisiones se cierren explícitamente después de su uso. Su funcionalidad principal es servir como mecanismo de devolución de llamada para crear y administrar flujos de salida, por ejemplo, durante los procesos de renderizado.
La lista lStream, que contiene múltiples objetos InputStream, hace que MemoryStreamProvider sea particularmente útil para escenarios que requieren múltiples flujos de salida, como la representación de documentos HTML de varias páginas en imágenes individuales. Esta clase no solo simplifica el proceso de administración de la salida de renderizado, sino que también brinda la flexibilidad de conservar los resultados en la memoria antes de almacenarlos en un almacenamiento persistente o transmitirlos a sistemas remotos.
Puede descargar los ejemplos completos y los archivos de datos desde GitHub.