Ausgabeströme – Output Streams – Java MemoryStream

Output-Streams

Bei der Durchführung von HTML-Konvertierungsvorgängen werden die Ergebnisse normalerweise in einer Datei gespeichert. In bestimmten Szenarien ist es jedoch erforderlich, die Ergebnisse im Speicher zu speichern oder sie an einen entfernten Speicherort zu senden. Sie können dies leicht tun, indem Sie die spezielle Klasse MemoryStreamProvider implementieren. Diese Klasse stellt einen Callback-Mechanismus dar, der für die Erstellung und Verwaltung von Ausgabeströmen, z. B. beim Rendern, erforderlich ist.

Hinweis: Es kann einige Male aufgerufen werden, wenn mehrere Ausgabeströme erforderlich sind. Das Szenario, in dem dieser Fall möglich ist, ist das Rendern von HTML auf den Satz von Bilddateien.

MemoryStreamProvider-Klasse

Die Aspose.HTML for Java Bibliothek ermöglicht es, die Klasse MemoryStreamProvider als eigene Implementierung der Schnittstelle java.io.Closeable zu realisieren. Sie ermöglicht es, die Methode close() auf Instanzen dieser Klasse aufzurufen, um alle vom MemoryStreamProvider-Objekt gehaltenen Ressourcen freizugeben. Die Klasse MemoryStreamProvider hat ein öffentliches Feld lStream, das eine Liste java.util.List von java.io.InputStream-Objekten ist. Diese Objekte stellen die Eingabeströme dar, die während des Rendering-Prozesses des Dokuments erzeugt werden.

 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

Der folgende Java-Code zeigt, wie die Klasse MemoryStreamProvider und die Aspose.HTML for Java-Bibliothek verwendet werden, um HTML in JPG zu konvertieren und das Bild in einer Datei zu speichern.

  1. Erstellen Sie eine neue Instanz der Klasse MemoryStreamProvider. Sie wird als Ausgabestrom für den Rendering-Prozess verwendet.
  2. Initialisieren Sie ein HTML-Dokument mit der Klasse HTMLDocument. Der HTML-Inhalt wird als Parameter an den HTMLDocument()-Konstruktor übergeben.
  3. Rufen Sie die Methode convertHTML(document, options, provider) auf, um das HTMLDocument-Objekt unter Verwendung von Speicheroptionen und MemoryStreamProvider in ein Bild zu konvertieren.
  4. Verwenden Sie die Methode streamProvider.lStream.get(0), um das erste InputStream-Objekt aus der lStream-Liste des streamProvider-Objekts abzurufen und es der Variablen memory zur weiteren Bearbeitung zuzuweisen. Auf diese Weise greifen Sie auf den Speicherstrom zu, der die Ergebnisdaten enthält.
  5. Verwenden Sie die Methode reset(), um die Stream-Position wieder auf den Anfang zurückzusetzen.
 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);

Schlussfolgerung

Die Klasse MemoryStreamProvider ist eine vielseitige und wichtige Komponente bei der Handhabung von In-Memory-Rendering-Operationen mit Aspose.HTML for Java. Durch die Implementierung der Schnittstelle java.io.Closeable bietet MemoryStreamProvider ein effizientes Ressourcenmanagement, da Streams nach der Verwendung explizit geschlossen werden können. Seine Hauptfunktionalität besteht darin, als Callback-Mechanismus für die Erstellung und Verwaltung von Ausgabeströmen zu dienen, zum Beispiel während Rendering-Prozessen.

Die Liste lStream, die mehrere InputStream-Objekte enthält, macht MemoryStreamProvider besonders nützlich für Szenarien, die mehrere Ausgabeströme erfordern, wie z.B. das Rendern mehrseitiger HTML-Dokumente in einzelne Bilder. Diese Klasse vereinfacht nicht nur den Prozess der Verwaltung der Rendering-Ausgabe, sondern bietet auch die Flexibilität, die Ergebnisse im Speicher zu halten, bevor sie in einem dauerhaften Speicher abgelegt oder an entfernte Systeme gestreamt werden.

Sie können die vollständigen Beispiele und Datendateien unter GitHub herunterladen.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.