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.
- 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 listalStream
del objetostreamProvider
y asígnelo a la variablememory
para 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// 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.