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