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.

 1public class MemoryStreamProvider implements java.io.Closeable {
 2    // List of InputStream objects created during the document rendering
 3    public java.util.List<java.io.InputStream> lStream = new java.util.ArrayList<>();
 4
 5    @Override
 6    public void close() throws java.io.IOException {
 7        for (java.io.InputStream stream : lStream) {
 8            stream.close();
 9        }
10    }
11}

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.

  1. Cree una nueva instancia de la clase MemoryStreamProvider. Se utilizará como flujo de salida para el proceso de renderizado.
  2. Inicialice un documento HTML utilizando la clase HTMLDocument. El contenido HTML se pasa como parámetro al constructor HTMLDocument().
  3. Llame al método convertHTML(document, opciones, proveedor) para convertir el objeto HTMLDocument en una imagen usando las opciones de guardar y MemoryStreamProvider.
  4. Utilice el método streamProvider.lStream.get(0) para recuperar el primer objeto InputStream de la lista lStream del objeto streamProvider y asígnelo a la variable memory para su posterior manipulación. De esta manera, accede al flujo de memoria que contiene los datos del resultado.
  5. Utilice el método reset() para restablecer la posición de la transmisión al principio.
 1// Create an instance of MemoryStreamProvider
 2MemoryOutputStreamProvider streamProvider = new MemoryOutputStreamProvider();
 3
 4// Initialize anHTMLDocument instance
 5HTMLDocument document = new HTMLDocument("<span>Hello World!!</span>");
 6
 7// Convert HTML to JPG using the MemoryStreamProvider
 8Converter.convertHTML(document, new ImageSaveOptions(ImageFormat.Jpeg), streamProvider.lStream);
 9
10// Get access to the memory stream that contains the result data
11java.io.InputStream memory = streamProvider.lStream.get(0);
12memory.reset();
13
14// Flush the result data to the output file
15java.nio.file.Files.copy(memory, new java.io.File("output.jpg").toPath());

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.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.