Выходные потоки – Output Streams – Java MemoryStream
Выходные потоки – Output Streams
При выполнении операций конвертации HTML результаты обычно сохраняются в файл. Однако в некоторых сценариях требуется хранить результаты в памяти или отправлять их в удаленное хранилище. Вы можете легко сделать это, реализовав специализированный класс MemoryStreamProvider. Этот класс представляет механизм обратного вызова, необходимый для создания и управления потоками вывода, например, во время рендеринга.
Примечание. Его можно вызывать несколько раз, если требуется несколько потоков вывода. Сценарий, когда этот случай возможен, – это рендеринг HTML в набор файлов изображений.
Класс MemoryStreamProvider
Библиотека Aspose.HTML for Java позволяет реализовать класс MemoryStreamProvider как пользовательскую реализацию интерфейса java.io.Closeable. Это позволит вызывать метод close() в экземплярах этого класса для освобождения любых ресурсов, хранящихся в объекте MemoryStreamProvider. Класс MemoryStreamProvider имеет общедоступное поле lStream, которое представляет собой список java.util.List объектов java.io.InputStream. Эти объекты представляют входные потоки, созданные в процессе рендеринга документа.
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
Следующий код Java демонстрирует, как использовать класс MemoryStreamProvider и библиотеку Aspose.HTML for Java для преобразования HTML в JPG и сохранения изображения в файл.
- Создайте новый экземпляр класса
MemoryStreamProvider. Он будет использоваться в качестве выходного потока для процесса рендеринга. - Инициализируйте HTML-документ, используя класс HTMLDocument. Содержимое HTML передается в качестве параметра конструктору HTMLDocument().
- Вызовите метод
convertHTML(document, options, provider), чтобы преобразовать объект HTMLDocument в изображение, используя параметры сохранения иMemoryStreamProvider. - Используйте метод
streamProvider.lStream.get(0), чтобы получить первый объектInputStreamиз спискаlStreamобъектаstreamProviderи назначить его переменнойmemoryдля дальнейших манипуляций. Таким образом, вы получаете доступ к потоку памяти, содержащему данные результата. - Используйте метод
reset(), чтобы сбросить позицию потока обратно в начало.
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);Заключение
Класс MemoryStreamProvider – это универсальный и важный компонент при обработке операций рендеринга в памяти с помощью Aspose.HTML for Java. Реализуя интерфейс java.io.Closeable, MemoryStreamProvider обеспечивает эффективное управление ресурсами, позволяя явно закрывать потоки после использования. Его основная функция – служить механизмом обратного вызова для создания выходных потоков и управления ими, например, во время процессов рендеринга.
Список lStream, который содержит несколько объектов InputStream, делает MemoryStreamProvider особенно полезным для сценариев, требующих нескольких выходных потоков, таких как рендеринг многостраничных HTML-документов в отдельные изображения. Этот класс не только упрощает процесс управления выводом рендеринга, но также обеспечивает гибкость для сохранения результатов в памяти перед их сохранением в постоянном хранилище или потоковой передачей в удаленные системы.
Вы можете загрузить полные примеры и файлы данных по адресу GitHub.